madmagestelegram / laravel
Telegram机器人与Laravel集成
0.4.0
2023-05-10 22:55 UTC
Requires
- php: >=7.4
- illuminate/http: ^6 || ^7 || ^8 || ^9 || ^10
- illuminate/support: ^6 || ^7 || ^8 || ^9 || ^10
- madmagestelegram/client: *
Requires (Dev)
- phpunit/phpunit: ^9.5
README
Laravel与Telegram集成。基于telegram bot types
安装
composer require madmagestelegram/laravel
概念
主要概念
主要概念是为来自Telegram的更新创建处理器。
它应实现抽象处理器
处理器示例
有一个内置的处理器用于处理Telegram命令
服务提供者
要定义自定义处理器或telegram-command-handler,需要创建并注册自己的服务提供者,并从\MadmagesTelegram\Laravel\HandlerServiceProvider
扩展它
<?php declare(strict_types=1); namespace App\Providers; class TelegramServiceProvider extends \MadmagesTelegram\Laravel\HandlerServiceProvider { /** @var array Handlers for telegram commands */ protected array $telegramCommands = []; // Other handlers protected array $messageHandlers = [ // This handler is for telegram-commands, // i.e. it makes $this->telegramCommands working \MadmagesTelegram\Laravel\Handler\Command\CommandHandler::class ]; protected array $editMessageHandlers = []; protected array $channelPostHandlers = []; protected array $editedChannelPostHandlers = []; protected array $inlineQueryHandlers = []; protected array $chosenInlineResultHandlers = []; protected array $callbackQueryHandlers = []; protected array $preCheckoutQueryHandlers = []; protected array $shippingQueryHandlers = []; protected array $pollAnswerHandlers = []; protected array $pollHandlers = []; }
命令处理器
为处理Telegram命令(例如,/start)而构建的命令处理器。
所有命令都应该实现抽象命令,并应在自己的服务提供者的\MadmagesTelegram\Laravel\HandlerServiceProvider::$telegramCommands
中定义
<?php declare(strict_types=1); namespace App\Module\Telegram\Command; use MadmagesTelegram\Laravel\Handler\Command\AbstractCommand; use MadmagesTelegram\Laravel\WebhookClient; use MadmagesTelegram\Types\Type\Message; use Illuminate\Http\JsonResponse; class Start extends AbstractCommand { private WebhookClient $client; public function __construct(WebhookClient $client) { // It possible to response, during webhook request // https://core.telegram.org/bots/api#making-requests-when-getting-updates $this->client = $client; } public function getName(): string { return 'start'; } public function execute(Message $message, bool $isPrivate): ?JsonResponse { return $this->client->sendMessage($message->getChat()->getId(), 'Hello there !'); } }
并注册它
<?php declare(strict_types=1); namespace App\Providers; class TelegramServiceProvider extends \MadmagesTelegram\Laravel\HandlerServiceProvider { protected array $telegramCommands = [ \App\Module\Telegram\Command\Start::class ]; }
Laravel命令
madmagestelegram:registerWebhook
- 在Telegram中注册webhook。这使得所有处理器都能工作