Download the PHP package alexvkokin/telegram-bot-app without Composer
On this page you can find all versions of the php package alexvkokin/telegram-bot-app. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download alexvkokin/telegram-bot-app
More information about alexvkokin/telegram-bot-app
Files in alexvkokin/telegram-bot-app
Package telegram-bot-app
Short Description Инструментарий для создания Телеграм бот приложения
License MIT
Informations about the package telegram-bot-app
Конструктор для telegram ботов
Для установки, запустите команду в командной строке
composer require alexvkokin/telegram-bot-app
Маршрутизатор
KeyboardMap
Маршрутизатором в проекте служит статическая переменная keyboardMap
класса KeyboardMap
, далее будем называть ее картой кнопок
, она описывает полные пути до контроллеров и методов, а также команды которые их запускают.
Например
Как видно из примера, каждый элемент массива, это описание контроллера:
'Tbot/TestApp/StartController'
- полный путь до контроллера. Обязательно используйте namespace при описании своих классов, чтобы избежать конфликтов
'actionStart'
- название метода в классе 'Tbot/TestApp/StartController'
'setButton'
- описание кнопок keyboard
которые будут установлены в боте, при выполнении метода 'actionStart'
. Однако для установки кнопок не достаточно просто описать из в карте кнопок, нужно также явно задать запрос на их установку из метода класса (для более детальной информации, смотрите код метода 'Tbot/TestApp/StartController'->'actionStart'
). Формат кнопки:
- icon - код иконки кнопки, кода кнопок. Кода берем из столбца Bytes, также из кода необходимо удалить все
\x
, например код\xC2\xAE
, должен быть преобразован вC2AE
- text - Название кнопки
- controller - Какой контроллер вызывается, при клике по этой кнопке в боте
- action - Какой экшен вызывается, при клике по этой кнопке в боте
- params - Дополнительные параметры для кнопки, например если мы хотим, чтобы при клике на кнопку в боте отправлялся контакт пользователя, в параметрах указываем
'params' => ["request_contact" => true]
'inline'
- описываются inline команды, при выполнении из телеграм бота которых, будет запускаться метод 'actionStart'
соответствующего класса
'callback'
- события связанные с inline keyboard. В данном параметре мы прописываем название метода, который будет обрабатывать кнопки с callback_data
Допустим у нас есть кнопка "Вывести мои данные"
Чтобы на стороне сервера, было отловлено нажатие на данную кнопку, мы должны в карте кнопок указать какой контроллер и метод будет отлавливать данное событие. Для этого добавим следующую запись
` Тем самым мы указываем, что при клике на кнопку
"Вывести мои данные", будет выполнен метод
profileGetконтроллера
Tbot/TestApp/ProfileController. Параметры
id=5|parent_id=1будут доступны в поле
callbackParams` в виде массива
'message'
- Выше были описаны способы отлова событий по клику. Данный атрибут содержит название класса сообщения, которое будет отловлено и передано на обработку методу 'actionMessage'
класса 'Tbot/TestApp/ProfileController'
Чтобы описать собственную карту кнопок, создайте новый класс, допустим AppKeyboardMap
, расширьте его базовым классом KeyboardMap
и в нем опишите все классы и методы вашего приложения. Смотрите пример в папке test/map/AppKeyboardMap.php
Работа с контроллером
Выше мы создали собственный класс AppKeyboardMap
с описанием наших контроллеров и методов, а также кнопок и команд с ними связанных. Далее нам нужно создать все эти контроллеры и методы.
Создадим класс StartController
расширим его базовым классом Controller
, далее создадим метод actionStart()
. При срабатывании данного метода, будем устанавливать кнопки в телеграм боте пользователя. Какие кнопки будут устанавливаться уже описано в нашей карте кнопок (смотрите разделом выше). Пример класса StartController смотрите в папке test/controllers/StartController.php
Как вы видите, выполняется запрос к api телеграм бота на установку кнопок. Конструирование кнопок проходит с помощью хелпера Helper::keyboard
В него мы отправляем нашу карту, название нашего класса и метода. В результате если в карте кнопок по указанному адресу присутствует опция установки кнопок setButton
, то все описанные в ней кнопки будут установлены в бот пользователя
Запуск проекта
Первым делом необходимо настроить скрипт через Webhook, который будет отлавливать сообщения от телеграм бота. В данный скрипт прописываем следующий код
\Tbot\TestApp\AppKeyboardMap
- Ваша карта, как создать описано в разделе KeyboardMap
\Tbot\TestApp\StartController
- Ваш стартовый контроллер, как создать описано в разделе Работа с контроллером