Referência de Roteamento
Referência de Roteamento
Seção intitulada “Referência de Roteamento”Esta seção contém uma lista completa de todos os métodos de roteamento disponíveis na fachada TelegramRouter. Cada método descreve quais parâmetros ele aceita, a quais eventos do Telegram ele responde e quais dados são passados para o manipulador.
Nota: Se você prefere uma abordagem mais moderna, também pode definir rotas usando atributos PHP 8. Veja Roteamento com Atributos PHP para uma abordagem alternativa para registro de rotas.
Parâmetros Comuns
Seção intitulada “Parâmetros Comuns”A maioria dos métodos de roteamento aceita os seguintes parâmetros comuns:
$action(array|string|\Closure) — manipulador da rota. Pode ser:- Closure/função
- String no formato
'Controller@method' - Array
[Controller::class, 'method']
$botId(string, padrão'*') — ID do bot para o qual a rota está registrada.'*'significa todos os bots$pattern(\Closure|string|null) — padrão para filtragem. Pode ser:- String com suporte a
*(curinga) - Closure para validação customizada
nullou'*'para lidar com todos os eventos deste tipo
- String com suporte a
Todos os manipuladores recebem um objeto de dados que herda de AbstractRouteData (namespace HybridGram\Core\Routing\RouteData) e contém:
$data->update— objetoUpdatecompleto do Telegram$data->botId— ID do bot$data->getChat()— método para obter objetoChat$data->getUser()— método para obter objetoUser$data->getChatId()— ID do chat (ounull)$data->getUserId()— ID do usuário (ounull)
Comandos e Mensagens
Seção intitulada “Comandos e Mensagens”onCommand()
Seção intitulada “onCommand()”Manipula comandos que começam com /.
Parâmetros:
$action— manipulador$botId(padrão'*') — ID do bot$pattern(padrãonull) — padrão do comando (ex:'/start','/user:*')$commandParamOptions(?\Closure) — filtro opcional por parâmetros do comando
Evento: message.text começa com /
Dados: CommandData
$data->command— nome do comando (sem/)$data->commandParams— array de argumentos após o comando$data->update$data->botId$data->getChat()$data->getUser()
Exemplo:
TelegramRouter::onCommand('/start', function(CommandData $data) { // Manipular comando /start});
TelegramRouter::onCommand('/user:*', function(CommandData $data) { $userId = $data->commandParams[0] ?? null;});onMessage()
Seção intitulada “onMessage()”Manipula mensagens de texto.
Parâmetros:
$action— manipulador$botId(padrão'*') — ID do bot$pattern(padrãonull) — padrão para texto da mensagem
Evento: message.text presente
Dados: TextMessageData (HybridGram\Core\Routing\RouteData\TextMessageData)
$data->text— texto da mensagem (string)$data->message— objetoMessagecompleto$data->update$data->botId$data->getChat()$data->getUser()
Exemplo:
use HybridGram\Core\Routing\RouteData\TextMessageData;
TelegramRouter::onTextMessage(function(TextMessageData $data) { // Manipular todas as mensagens; texto está em $data->text});
TelegramRouter::onTextMessage(function(TextMessageData $data) { // Manipular mensagens com padrão}, '*', 'hello*');Conteúdo de Mídia
Seção intitulada “Conteúdo de Mídia”onPhoto()
Seção intitulada “onPhoto()”Manipula fotos enviadas.
Parâmetros:
$action— manipulador$botId(padrão'*') — ID do bot$pattern(\Closure|null, padrãonull) — padrão para legenda
Evento: message.photo presente
Dados: PhotoData
$data->photoSizes— array de objetosPhotoSize$data->update$data->botId$data->getChat()$data->getUser()
onDocument()
Seção intitulada “onDocument()”Manipula documentos enviados.
Parâmetros:
$action— manipulador$botId(padrão'*') — ID do bot$pattern(padrãonull) — padrão para legenda$documentOptions(?array<MimeType|string>) — filtro opcional por tipos MIME
Evento: message.document presente
Dados: DocumentData
$data->document— objetoDocument$data->update$data->botId$data->getChat()$data->getUser()
Exemplo:
use HybridGram\Telegram\Document\MimeType;
TelegramRouter::onDocument(function(DocumentData $data) { // Manipular todos os documentos}, '*', null, [MimeType::PDF, MimeType::JSON]);onAudio()
Seção intitulada “onAudio()”Manipula arquivos de áudio.
Evento: message.audio presente
Dados: AudioData
$data->audio— objetoAudio
onSticker()
Seção intitulada “onSticker()”Manipula adesivos.
Evento: message.sticker presente
Dados: StickerData
$data->sticker— objetoSticker
onVoice()
Seção intitulada “onVoice()”Manipula mensagens de voz.
Evento: message.voice presente
Dados: VoiceData
$data->voice— objetoVoice
onVideoNote()
Seção intitulada “onVideoNote()”Manipula mensagens de vídeo (vídeos redondos).
Evento: message.videoNote presente
Dados: VideoNoteData
$data->videoNote— objetoVideoNote
Geolocalização e Contatos
Seção intitulada “Geolocalização e Contatos”onLocation()
Seção intitulada “onLocation()”Manipula envio de geolocalização.
Evento: message.location presente
Dados: LocationData
$data->location— objetoLocation
onContact()
Seção intitulada “onContact()”Manipula envio de contatos.
Evento: message.contact presente
Dados: ContactData
$data->contact— objetoContact
Pesquisas
Seção intitulada “Pesquisas”onPoll()
Seção intitulada “onPoll()”Manipula criação de pesquisas.
Parâmetros:
$action— manipulador$botId(padrão'*') — ID do bot$pattern(\Closure|null, padrãonull) — padrão opcional$isAnonymous(?bool) — filtrar por anonimato da pesquisa$pollType(?PollType) — filtrar por tipo de pesquisa (PollType::REGULARouPollType::QUIZ)
Evento: message.poll presente
Dados: PollData
$data->poll— objetoPoll
Exemplo:
use HybridGram\Telegram\Poll\PollType;
TelegramRouter::onPoll(function(PollData $data) { // Manipular apenas quizzes}, '*', null, false, PollType::QUIZ);Consulta de Callback e Consulta Inline
Seção intitulada “Consulta de Callback e Consulta Inline”onCallbackQuery()
Seção intitulada “onCallbackQuery()”Manipula pressionamento de botões inline.
Parâmetros:
$action— manipulador$botId(padrão'*') — ID do bot$pattern(padrão'*') — padrão para ação (ex:'menu:*')$queryParams(?array<string, string|null>|array<int, QueryParamInterface>) — filtros de parâmetros de consulta opcionais
Evento: callbackQuery presente
Dados: CallbackQueryData
$data->action— string de ação dos dados de callback$data->params— array de parâmetros dos dados de callback$data->query— objetoCallbackQuery$data->update$data->botId$data->getChat()$data->getUser()
onInlineQuery()
Seção intitulada “onInlineQuery()”Manipula consultas inline.
Evento: inlineQuery presente
Dados: InlineQueryData
$data->inlineQuery— objetoInlineQuery
Eventos de Chat
Seção intitulada “Eventos de Chat”onNewChatMembers()
Seção intitulada “onNewChatMembers()”Manipula adição de novos membros ao chat.
Dados: NewChatMembersData
$data->newChatMembers— array de novos membros
onLeftChatMember()
Seção intitulada “onLeftChatMember()”Manipula saída de membros do chat.
Dados: LeftChatMemberData
$data->leftChatMember— objeto do membro que saiu
onMyChatMember()
Seção intitulada “onMyChatMember()”Manipula mudanças no status do bot no chat.
Evento: myChatMember presente
Dados: ChatMemberUpdatedData
$data->chatMemberUpdated— objetoChatMemberUpdated
Nota: Funciona em todos os tipos de chat por padrão (PRIVATE, GROUP, SUPERGROUP, CHANNEL).
onChatMember()
Seção intitulada “onChatMember()”Manipula mudanças no status de membros do chat.
Evento: chatMember presente
Dados: ChatMemberUpdatedData
Rotas Universais
Seção intitulada “Rotas Universais”onAny()
Seção intitulada “onAny()”Manipula qualquer atualização.
Dados: AnyData
$data->update$data->botId
onFallback()
Seção intitulada “onFallback()”Manipula atualizações para as quais nenhuma rota apropriada foi encontrada.
Dados: FallbackData
Métodos Auxiliares
Seção intitulada “Métodos Auxiliares”forBot()
Seção intitulada “forBot()”Retorna o construtor de rota para um bot específico.
TelegramRouter::forBot('main') ->onCommand('/start', function(CommandData $data) { // Rota apenas para bot 'main' });group()
Seção intitulada “group()”Agrupa rotas com atributos comuns.
Atributos:
for_bot(string) — ID do botchat_type(ChatType|ChatType[]|null) — tipo de chat ou array de tiposmiddlewares(array) — array de classes de middlewarefrom_state(array) — array de estados a partir dos quais a transição deve ocorrerto_state(string) — estado para o qual transicionar
TelegramRouter::group([ 'for_bot' => 'main', 'chat_type' => ChatType::GROUP, 'middlewares' => [AuthTelegramRouteMiddleware::class],], function($router) { $router->onCommand('/admin', function(CommandData $data) { // Rota com atributos comuns do grupo });});chatType() e chatTypes()
Seção intitulada “chatType() e chatTypes()”Define tipos de chat para a rota.
// Tipo únicoTelegramRouter::forBot('main') ->chatType(ChatType::PRIVATE) ->onCommand('/start', function(CommandData $data) { // ... });
// Múltiplos tiposTelegramRouter::forBot('main') ->chatTypes([ChatType::PRIVATE, ChatType::GROUP]) ->onCommand('/help', function(CommandData $data) { // ... });Tipos de Dados para Filtragem
Seção intitulada “Tipos de Dados para Filtragem”ChatType
Seção intitulada “ChatType”Enum para filtrar rotas por tipo de chat:
use HybridGram\Core\Routing\ChatType;
ChatType::PRIVATE // Chats privadosChatType::GROUP // GruposChatType::SUPERGROUP // SupergruposChatType::CHANNEL // CanaisMimeType
Seção intitulada “MimeType”Enum para filtrar documentos por tipo MIME:
use HybridGram\Telegram\Document\MimeType;
MimeType::PNGMimeType::JPEGMimeType::PDFMimeType::JSON// ... e outrosPollType
Seção intitulada “PollType”Enum para filtrar pesquisas por tipo:
use HybridGram\Telegram\Poll\PollType;
PollType::REGULAR // Pesquisa regularPollType::QUIZ // QuizChatMemberStatus
Seção intitulada “ChatMemberStatus”Enum para filtrar por status de membro do chat:
use HybridGram\Telegram\ChatMember\ChatMemberStatus;
ChatMemberStatus::CREATORChatMemberStatus::ADMINISTRATORChatMemberStatus::MEMBERChatMemberStatus::RESTRICTEDChatMemberStatus::LEFTChatMemberStatus::KICKED