Trabalhando com Múltiplos Bots
O pacote suporta o trabalho com múltiplos bots simultaneamente. Cada bot possui sua própria configuração e rotas.
Configuração de Múltiplos Bots
Seção intitulada “Configuração de Múltiplos Bots”No arquivo config/hybridgram.php:
'bots' => [ [ 'token' => env('BOT_TOKEN_1'), 'bot_id' => 'main', 'update_mode' => UpdateModeEnum::WEBHOOK, 'webhook_url' => env('TELEGRAM_WEBHOOK_URL_1'), 'routes_file' => base_path('routes/telegram-main.php'), ], [ 'token' => env('BOT_TOKEN_2'), 'bot_id' => 'support', 'update_mode' => UpdateModeEnum::WEBHOOK, 'webhook_url' => env('TELEGRAM_WEBHOOK_URL_2'), 'routes_file' => base_path('routes/telegram-support.php'), ], [ 'token' => env('BOT_TOKEN_3'), 'bot_id' => 'admin', 'update_mode' => UpdateModeEnum::POLLING, 'routes_file' => base_path('routes/telegram-admin.php'), ],],Variáveis de Ambiente
Seção intitulada “Variáveis de Ambiente”# Primeiro botBOT_TOKEN_1=token_do_primeiro_botTELEGRAM_WEBHOOK_URL_1=https://seu-dominio.com/telegram/bot/webhook/main
# Segundo botBOT_TOKEN_2=token_do_segundo_botTELEGRAM_WEBHOOK_URL_2=https://seu-dominio.com/telegram/bot/webhook/support
# Terceiro botBOT_TOKEN_3=token_do_terceiro_botRoteamento para Bot Específico
Seção intitulada “Roteamento para Bot Específico”Usando forBot()
Seção intitulada “Usando forBot()”use HybridGram\Facades\TelegramRouter;
TelegramRouter::forBot('main')->onCommand('/start', function(CommandData $data) { // Manipula apenas para o bot 'main'});
// routes/telegram-support.phpTelegramRouter::forBot('support')->onCommand('/start', function(CommandData $data) { // Manipula apenas para o bot 'support'});Rotas Comuns para Todos os Bots
Seção intitulada “Rotas Comuns para Todos os Bots”// Rota para todos os botsTelegramRouter::onCommand('/help', function(CommandData $data) { // $data->botId contém o ID do bot para o qual a rota foi acionada $botId = $data->botId;
// Lógica diferente dependendo do bot match($botId) { 'main' => $this->handleMainHelp($data), 'support' => $this->handleSupportHelp($data), default => $this->handleDefaultHelp($data), };});Obtendo Instância de TelegramBotApi para Bot Específico
Seção intitulada “Obtendo Instância de TelegramBotApi para Bot Específico”// Para bot específico$telegram = app(\HybridGram\Telegram\TelegramBotApi::class, ['botId' => 'main']);$telegram->sendMessage($chatId, 'Mensagem do bot main');
$telegram = app(\HybridGram\Telegram\TelegramBotApi::class, ['botId' => 'support']);$telegram->sendMessage($chatId, 'Mensagem do bot support');Agrupando Rotas por Bots
Seção intitulada “Agrupando Rotas por Bots”TelegramRouter::group([ 'botId' => 'main',], function($router) { $router->onCommand('/start', function(CommandData $data) { // ... });
$router->onCommand('/menu', function(CommandData $data) { // ... });});Diferentes Modos de Operação
Seção intitulada “Diferentes Modos de Operação”Cada bot pode funcionar em seu próprio modo:
'bots' => [ [ 'bot_id' => 'main', 'update_mode' => UpdateModeEnum::WEBHOOK, // Bot de produção ], [ 'bot_id' => 'dev', 'update_mode' => UpdateModeEnum::POLLING, // Bot de desenvolvimento ],],Gerenciamento de Webhook
Seção intitulada “Gerenciamento de Webhook”Configurando Webhook para Bot Específico
Seção intitulada “Configurando Webhook para Bot Específico”php artisan hybridgram:set-webhook mainphp artisan hybridgram:set-webhook supportObtendo Informações do Webhook
Seção intitulada “Obtendo Informações do Webhook”php artisan hybridgram:get-webhook-info mainphp artisan hybridgram:get-webhook-info supportExecutando Polling para Múltiplos Bots
Seção intitulada “Executando Polling para Múltiplos Bots”Execute um processo separado para cada bot:
# Terminal 1php artisan hybridgram:polling main
# Terminal 2php artisan hybridgram:polling supportOu use Supervisor:
[program:telegram-main]command=php /path/to/artisan hybridgram:polling main
[program:telegram-support]command=php /path/to/artisan hybridgram:polling supportIsolamento de Dados
Seção intitulada “Isolamento de Dados”Cada bot possui:
- Suas próprias rotas
- Seu próprio rate limit (contador separado)
- Seus próprios estados (isolados)
- Sua própria configuração
Compartilhando Código Entre Bots
Seção intitulada “Compartilhando Código Entre Bots”Você pode extrair a lógica comum em serviços:
class CommonService{ public function handleWelcome(CommandData $data, string $botId): void { $telegram = app(\HybridGram\Telegram\TelegramBotApi::class, ['botId' => $botId]);
$message = match($botId) { 'main' => 'Bem-vindo ao bot principal!', 'support' => 'Bem-vindo ao suporte!', default => 'Bem-vindo!', };
$telegram->sendMessage($data->getChat()->id, $message); }}
// UsoTelegramRouter::forBot('main')->onCommand('/start', function(CommandData $data) { app(CommonService::class)->handleWelcome($data, 'main');});Recomendações
Seção intitulada “Recomendações”- ✅ Use
bot_idúnico para cada bot - ✅ Separe as rotas em arquivos para melhor organização
- ✅ Use prefixos nos nomes das variáveis de ambiente
- ✅ Documente o propósito de cada bot
- ✅ Monitore os rate limits para cada bot separadamente
Próximos Passos
Seção intitulada “Próximos Passos”- Configuração — configuração detalhada
- Webhook — configuração de webhooks para múltiplos bots