mollsoft/laravel-telegram-bot

这是我创建的包 laravel-telegram-bot


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

EN: 此包适用于 Laravel 11+,允许您轻松创建交互式 Telegram 机器人,使用 Laravel 路由,并使用 Blade 模板与用户进行对话。

RU: Этот пакет для Laravel 11+ позволяет с легкостью создавать интерактивные Telegram боты, при чем использовать маршрутизацию Laravel, а для ведения диалога с пользователем - использовать Blade шаблоны.

安装 / Установка

您可以通过 composer 安装此包

使用包管理器 Composer 安装此包

composer require mollsoft/laravel-telegram-bot
php artisan telegram:install

您可以使用以下命令发布并运行迁移

您可以使用以下命令发布并运行迁移

php artisan vendor:publish --tag="telegram-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="telegram-config"

可选地,您可以使用以下命令发布视图

可选地,您可以使用以下命令发布视图

php artisan vendor:publish --tag="telegram-views"

可选地,如果您使用 Sail 进行本地开发,您需要在 supervisord.conf 文件中添加 PHP 参数 PHP_CLI_SERVER_WORKERS="10"

[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

您可以使用 Laravel Auth,编辑 config/auth.php 文件并编辑 guards 部分

'guards' => [
        'web' => [...],
        'telegram' => [
            'driver' => 'telegram',
            'provider' => 'users',
        ]
    ],

之后,您可以在路由中使用中间件 auth:telegram

如果您想要处理自动截断对话,您必须使用 Schedule 每分钟运行命令 php artisan telegram:truncate

使用 / Использование

创建新的 Telegram 机器人

php artisan telegram:new-bot

为机器人设置 Webhook

php artisan telegram:set-webhook

为机器人取消 Webhook

php artisan telegram:unset-webhook

为机器人手动轮询(在本地主机上)

php artisan telegram:pooling [BOT_ID]

内联键盘

如果您想要创建用于更改当前 URI 查询参数的按钮,请使用此模板

<inline-keyboard>
    <row>
        <column query-param="value">Change query param</column>
    </row>
</inline-keyboard>

如果您想要发送 POST 数据,您必须使用此模板

<inline-keyboard>
    <row>
        <column data-field="value">Send field value</column>
    </row>
</inline-keyboard>

如果您发送的数据很长,您可以使用此模板进行加密

<inline-keyboard>
    <row>
        <column data-field="long value" encode="true">Encoded send data</column>
    </row>
</inline-keyboard>

如果您想从按钮重定向到另一个页面,请使用此模板

<inline-keyboard>
    <row>
        <column data-redirect="/">Redirect to /</column>
    </row>
</inline-keyboard>

测试 / Тестирование

composer test

想法 / Идеи

  1. 在 Inline Button 中添加参数 query-history=false 以防止当前 URL 被保存到 referer,并在后退时执行表单重置 - 而是返回。
  2. 允许用户上传图片/视频/文档,并在消息中解析 capture。
  3. 在 Reply Button 中添加发送电话号码按钮,并在 TelegramRequest 中获取结果。
  4. 读取 TelegramRequest 中的转发联系人的结果。

变更日志 / Логи изменений

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

致谢 / Авторы

许可 / Лицензия

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件