mollsoft / laravel-telegram-bot
This is my package laravel-telegram-bot
Fund package maintenance!
Mollsoft
Requires
- php: ^8.3
- ext-dom: *
- danog/telegram-entities: ^1.0
- illuminate/contracts: ^11.0
- illuminate/support: ^11.0
- spatie/laravel-package-tools: ^1.16
- symfony/dom-crawler: ^7.1
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- dev-main
- v1.0.53
- v1.0.52
- v1.0.51
- v1.0.50
- v1.0.49
- v1.0.48
- v1.0.47
- v1.0.46
- v1.0.45
- v1.0.44
- v1.0.43
- v1.0.42
- v1.0.41
- v1.0.40-beta
- v1.0.39-beta
- v1.0.38-beta
- v1.0.37-beta
- v1.0.36-beta
- v1.0.35-beta
- v1.0.34-beta
- v1.0.33-beta
- v1.0.32-beta
- v1.0.31-beta
- v1.0.30-beta
- v1.0.29-beta
- v1.0.28-beta
- v1.0.27-beta
- v1.0.26-beta
- v1.0.25-beta
- v1.0.24-beta
- v1.0.23-beta
- v1.0.22-beta
- v1.0.21-beta
- v1.0.20-beta
- v1.0.19-beta
- v1.0.18-beta
- v1.0.17-beta
- v1.0.16-beta
- v1.0.15-beta
- v1.0.14-beta
- v1.0.13-beta
- v1.0.12-beta
- v1.0.11-beta
- v1.0.10-beta
- v1.0.9-beta
- v1.0.8-beta
- v1.0.7-beta
- v1.0.6-beta
- v1.0.5-beta
- v1.0.4-beta
- v1.0.3-beta
- v1.0.2-beta
- v1.0.1-beta
- v1.0.0
- v1.0.0-beta
This package is auto-updated.
Last update: 2024-11-21 09:48:38 UTC
README
EN: This package for Laravel 11+ allows you to easily create interactive Telegram bots, using Laravel routing, and using Blade templates to conduct a dialogue with the user.
RU: Этот пакет для Laravel 11+ позволяет с легкостью создавать интерактивные Telegram боты, при чем использовать маршрутизацию Laravel, а для ведения диалога с пользователем - использовать Blade шаблоны.
Installation / Установка
You can install the package via composer:
Используйте менеджер пакетов Composer для установки пакета:
composer require mollsoft/laravel-telegram-bot
php artisan telegram:install
You can publish and run the migrations with:
Вы можете опубликовать и запустить миграции:
php artisan vendor:publish --tag="telegram-migrations"
php artisan migrate
You can publish the config file with:
Вы можете опубликовать конфигурационные файлы командой:
php artisan vendor:publish --tag="telegram-config"
Optionally, you can publish the views using:
Опционально, Вы можете опубликовать шаблоны командой:
php artisan vendor:publish --tag="telegram-views"
Optionally, if you use Sail for local development, you need add PHP params PHP_CLI_SERVER_WORKERS="10"
in file supervisord.conf
:
[program:php] command=%(ENV_SUPERVISOR_PHP_COMMAND)s user=%(ENV_SUPERVISOR_PHP_USER)s environment=LARAVEL_SAIL="1",PHP_CLI_SERVER_WORKERS="10" stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
You can use Laravel Auth, edit file config/auth.php
and edit section guards
:
'guards' => [ 'web' => [...], 'telegram' => [ 'driver' => 'telegram', 'provider' => 'users', ] ],
After this you can use middleware auth:telegram
in your routes.
If you want work with automatic truncate dialogs, you must run command php artisan telegram:truncate
every minute using Schedule.
Usage / Использование
Create new Telegram Bot:
php artisan telegram:new-bot
Set Webhook for bot:
php artisan telegram:set-webhook
Unset Webhook for bot:
php artisan telegram:unset-webhook
Manual pooling (on localhost) for bot:
php artisan telegram:pooling [BOT_ID]
Inline Keyboard
If you want create button for change current URI query params, use this template:
<inline-keyboard> <row> <column query-param="value">Change query param</column> </row> </inline-keyboard>
If you want send POST data you must use this template:
<inline-keyboard> <row> <column data-field="value">Send field value</column> </row> </inline-keyboard>
If you POST data is long, you can encrypt using this template:
<inline-keyboard> <row> <column data-field="long value" encode="true">Encoded send data</column> </row> </inline-keyboard>
If you want make redirect to another page from button, use this template:
<inline-keyboard> <row> <column data-redirect="/">Redirect to /</column> </row> </inline-keyboard>
Edit Form / Форма для редактирования данных
class MyForm extends \Mollsoft\Telegram\EditForm\BaseForm { public function rules(): array { return [ 'name' => ['required', 'string', 'min:5', 'max:255'], 'phone' => ['required', 'string', 'min:10', 'max:15'], ]; } public function titles(): array { return [ 'name' => 'Ваше имя', 'phone' => 'Ваш номер телефона' ]; } }
class MyController { public function edit(MyForm $form): mixed { $form->setDefault([ 'name' => 'Default name', 'phone' => '1234567890', ]); if( $form->validate() ) { // $form->get(); } return view('...', compact('form')); } public function create(MyForm $form): mixed { if( $form->isCreate()->validate() ) { // $form->get(); } return view('...', compact('form')); } }
<message> <x-telegram-edit-form :form="$form"> <x-slot:name> <line>Please, enter your First Name:</line> </x-slot:name> </x-telegram-edit-form> </message>
Testing / Тестирование
composer test
Ideas / Идеи
- В Inline Button сделать параметр
query-history=false
что бы по нему текущий URL не сохранялся в referer и при back не выполнялся сброс формы - а был возврат назад. - Возможность загрузки пользователями фото/видео/документы и парсинг capture в message.
- В Reply Button сделать кнопку отправки номера телефона + получение результатов в TelegramRequest.
- Чтение результата пересланного контакта в TelegramRequest.
Changelog / Логи изменений
Please see CHANGELOG for more information on what has changed recently.
Пожалуйста смотрите CHANGELOG для получения подробной информации об изменениях.
Credits / Авторы
License / Лицензия
The MIT License (MIT). Please see License File for more information.
Лицензия MIT (MIT). Дополнительную информацию см. в Файле лицензии.