# PRTelegramBot

> #### <mark style="color:$info;">**Если проект был вам полезен, вы можете поддержать его развитие на Boosty:**</mark> [<mark style="color:orange;">**https://boosty.to/prethink**</mark>](https://boosty.to/prethink) <mark style="color:$info;">**Звезда ⭐**</mark> [<mark style="color:blue;">**репозиторию**</mark>](https://github.com/prethink/PRTelegramBot) <mark style="color:$info;">**тоже будет отличной поддержкой.**</mark>

## Исходники

<https://github.com/prethink/PRTelegramBot>

Документация актуальна для версии 0.9.7

## ⚛️ Ядро фреймворка

***Внимание! В основе PRTelegramBot лежит библиотека*** [***TelegramBot***](https://github.com/TelegramBots/Telegram.Bot)***, поэтому вы можете использовать все функции которые задействует эта библиотека.*** [***Документация***](https://telegrambots.github.io/book/)

* TelegramBot v22.9.0 <https://github.com/TelegramBots/Telegram.Bot>

## 💎 Функционал

* **Работа с reply командами.** Поддержка простых текстовых команд.
* **Работа с динамическими командами ответа.** Текстовые команды, загружаемые из конфигурационного файла без необходимости компиляции.
* **Обработка команд с параметрами.** Возможность работы с командами, содержащими параметры в скобках, например, "Тест (1)".
* **Работа с slash командами.** Обработка команд типа /get\_1, /users и других текстовых команд.
* **Гибкая работа с inline-командами.** Генератор и парсер inline-команд.
* **Создание меню.** Простое и гибкое создание reply и inline меню.
* **Работа с конфигурационными файлами.** Поддержка конфигурационных файлов для каждого бота с возможностью реализации собственного провайдера конфигураций. По умолчанию используется JSON.
* **Админ-менеджер.** Управление администраторами бота с возможностью реализации собственного админ-менеджера.
* **Менеджер белого списка пользователей.** Гибкое управление белым списком с возможностью добавления методов, игнорируемых белым списком, и реализации собственного менеджера белого списка.
* **Обработка update.** Возможность реализации собственного обработчика update.
* **Система событий.** Гибкая система обработки событий.
* **Многоботная система.** Возможность создания нескольких ботов в одном проекте.
* **Система middleware.** Добавление собственных обработчиков до и после update, аналогично middleware в ASP.NET.
* **Проверки перед выполнением команд.** Внутренние проверки для команд reply, dynamicreply, nextstep, slash и inline.
* **Создание собственных обработчиков для update типа message и callbackQuery.** Реализация своих обработчиков как reply, slash, inlineCallback.
* **Динамическое управление командами.** Возможность добавления и удаления команд в реальном времени с реализацией собственного регистратора команд.
* **Сброс старых update.** Возможность сброса всех старых update перед запуском бота.
* **Пошаговое выполнение команд.** Возможность выполнения пошаговых наборов reply-команд.
* **Подключение к собственным серверам.** Работа ботов через собственные сервера.
* **Создание polling и webhook ботов.** Поддержка различных методов работы с ботами.
* **Встроенный функционал календаря.** Работа с датами и календарями.
* **Постраничная работа с сообщениями.** Управление сообщениями с постраничной навигацией.
* **Хранение кэша пользователей.** Работа с пользовательским кэшем.
* **Ограничение доступа к методам.** Возможность ограничения доступа к определенным методам.
* **Работа с dependency injection.** Поддержка внедрения зависимостей.
* **Парсинг из конфигурационных файлов.** Парсинг сообщений, команд и кнопок из конфигурационных файлов.
* **Фоновые задачи.**
* **Шина событий.**
* **Функционал предоставляемый telegram.bot.**

## 🧱 Интегрированные пакеты

CalendarPicker | karb0f0s <https://github.com/karb0f0s/CalendarPicker>
