Справочник по роутингу
Справочник по роутингу
Заголовок раздела «Справочник по роутингу»Этот раздел содержит полный список всех доступных методов роутинга из фасада TelegramRouter. Каждый метод описывает, какие параметры он принимает, на какие события Telegram реагирует и какие данные передаются в обработчик.
Примечание: Если вы предпочитаете более современный подход, вы можете определять маршруты с помощью атрибутов PHP 8. Смотрите Роутинг с PHP атрибутами как альтернативный подход к регистрации маршрутов.
Общие параметры
Заголовок раздела «Общие параметры»Большинство методов роутинга принимают следующие общие параметры:
$action(array|string|\Closure) — обработчик роута. Может быть:- Closure/функция
- Строка в формате
'Controller@method' - Массив
[Controller::class, 'method']
$botId(string, по умолчанию'*') — ID бота, для которого регистрируется роут.'*'означает все боты$pattern(\Closure|string|null) — паттерн для фильтрации. Может быть:- Строка с поддержкой
*(wildcard) - Closure для кастомной проверки
nullили'*'для обработки всех событий данного типа
- Строка с поддержкой
Все обработчики получают объект данных, который наследуется от AbstractRouteData (пространство имён HybridGram\Core\Routing\RouteData) и содержит:
$data->update— полный объектUpdateот Telegram$data->botId— ID бота$data->getChat()— метод для получения объектаChat$data->getUser()— метод для получения объектаUser$data->getChatId()— ID чата (илиnull)$data->getUserId()— ID пользователя (илиnull)
Команды и сообщения
Заголовок раздела «Команды и сообщения»onCommand()
Заголовок раздела «onCommand()»Обрабатывает команды, начинающиеся с /.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн команды (например,'/start','/user:*')$commandParamOptions(?\Closure) — опциональный фильтр по параметрам команды
Событие: message.text начинается с /
Данные: CommandData
$data->command— название команды (без/)$data->commandParams— массив аргументов после команды$data->update$data->botId$data->getChat()$data->getUser()
Пример:
TelegramRouter::onCommand('/start', function(CommandData $data) { // Обработка команды /start});
TelegramRouter::onCommand('/user:*', function(CommandData $data) { $userId = $data->commandParams[0] ?? null;});onMessage()
Заголовок раздела «onMessage()»Обрабатывает текстовые сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста сообщения
Событие: message.text присутствует
Данные: TextMessageData (HybridGram\Core\Routing\RouteData\TextMessageData)
$data->text— текст сообщения (string)$data->message— полный объектMessage$data->update$data->botId$data->getChat()$data->getUser()
Пример:
use HybridGram\Core\Routing\RouteData\TextMessageData;
TelegramRouter::onTextMessage(function(TextMessageData $data) { // Обработка всех сообщений; текст в $data->text});
TelegramRouter::onTextMessage(function(TextMessageData $data) { // Обработка сообщений с паттерном}, '*', 'привет*');Медиа контент
Заголовок раздела «Медиа контент»onPhoto()
Заголовок раздела «onPhoto()»Обрабатывает отправленные фотографии.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(\Closure|null, по умолчаниюnull) — паттерн для подписи (caption)
Событие: message.photo присутствует
Данные: PhotoData
$data->photoSizes— массив объектовPhotoSize$data->update$data->botId$data->getChat()$data->getUser()
onPhotoMediaGroup()
Заголовок раздела «onPhotoMediaGroup()»Обрабатывает группы фотографий (альбомы).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.photo присутствует и message.mediaGroupId установлен
Данные: PhotoMediaGroupData
$data->photos— массив всех фотографий в группе$data->update$data->botId$data->getChat()$data->getUser()
onDocument()
Заголовок раздела «onDocument()»Обрабатывает отправленные документы.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи$documentOptions(?array<MimeType|string>) — опциональный фильтр по MIME-типам
Событие: message.document присутствует
Данные: DocumentData
$data->document— объектDocument$data->update$data->botId$data->getChat()$data->getUser()
Пример:
use HybridGram\Telegram\Document\MimeType;
TelegramRouter::onDocument(function(DocumentData $data) { // Обработка всех документов}, '*', null, [MimeType::PDF, MimeType::JSON]);onAnimation()
Заголовок раздела «onAnimation()»Обрабатывает анимации (GIF).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.animation присутствует
Данные: AnimationData
$data->animation— объектAnimation$data->update$data->botId$data->getChat()$data->getUser()
onAudio()
Заголовок раздела «onAudio()»Обрабатывает аудио файлы.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.audio присутствует
Данные: AudioData
$data->audio— объектAudio$data->update$data->botId$data->getChat()$data->getUser()
onSticker()
Заголовок раздела «onSticker()»Обрабатывает стикеры.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.sticker присутствует
Данные: StickerData
$data->sticker— объектSticker$data->update$data->botId$data->getChat()$data->getUser()
onVideoNote()
Заголовок раздела «onVideoNote()»Обрабатывает видеосообщения (круглые видео).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.videoNote присутствует
Данные: VideoNoteData
$data->videoNote— объектVideoNote$data->update$data->botId$data->getChat()$data->getUser()
onVoice()
Заголовок раздела «onVoice()»Обрабатывает голосовые сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.voice присутствует
Данные: VoiceData
$data->voice— объектVoice$data->update$data->botId$data->getChat()$data->getUser()
onStory()
Заголовок раздела «onStory()»Обрабатывает истории (stories).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.story присутствует
Данные: StoryData
$data->story— объектStory$data->update$data->botId$data->getChat()$data->getUser()
onPaidMedia()
Заголовок раздела «onPaidMedia()»Обрабатывает платный медиа контент.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.paidMedia присутствует
Данные: PaidMediaData
$data->paidMedia— объект платного медиа$data->update$data->botId$data->getChat()$data->getUser()
Геолокация и контакты
Заголовок раздела «Геолокация и контакты»onLocation()
Заголовок раздела «onLocation()»Обрабатывает отправку геолокации.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.location присутствует
Данные: LocationData
$data->location— объектLocation$data->update$data->botId$data->getChat()$data->getUser()
onVenue()
Заголовок раздела «onVenue()»Обрабатывает отправку места (venue).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.venue присутствует
Данные: VenueData
$data->venue— объектVenue$data->location— объектLocation$data->update$data->botId$data->getChat()$data->getUser()
onContact()
Заголовок раздела «onContact()»Обрабатывает отправку контакта.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.contact присутствует
Данные: ContactData
$data->contact— объектContact$data->update$data->botId$data->getChat()$data->getUser()
onPoll()
Заголовок раздела «onPoll()»Обрабатывает создание опроса.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(\Closure|null, по умолчаниюnull) — опциональный паттерн$isAnonymous(?bool) — фильтр по анонимности опроса$pollType(?PollType) — фильтр по типу опроса (PollType::REGULARилиPollType::QUIZ)
Событие: message.poll присутствует
Данные: PollData
$data->poll— объектPoll$data->update$data->botId$data->getChat()$data->getUser()
Пример:
use HybridGram\Telegram\Poll\PollType;
TelegramRouter::onPoll(function(PollData $data) { // Обработка только викторин}, '*', null, false, PollType::QUIZ);onPollAnswered()
Заголовок раздела «onPollAnswered()»Обрабатывает ответы на опрос.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(\Closure|null, по умолчаниюnull) — опциональный паттерн$isAnonymous(?bool) — фильтр по анонимности опроса$pollType(?PollType) — фильтр по типу опроса
Событие: pollAnswer присутствует
Данные: PollAnswerData
$data->pollAnswer— объектPollAnswer$data->update$data->botId$data->getChat()$data->getUser()
onPollClosed()
Заголовок раздела «onPollClosed()»Обрабатывает закрытие опроса.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(\Closure|null, по умолчаниюnull) — опциональный паттерн$isAnonymous(?bool) — фильтр по анонимности опроса$pollType(?PollType) — фильтр по типу опроса
Событие: pollClosed присутствует
Данные: PollClosedData
$data->pollClosed— объектPollClosed$data->update$data->botId$data->getChat()$data->getUser()
Игры и развлечения
Заголовок раздела «Игры и развлечения»onDice()
Заголовок раздела «onDice()»Обрабатывает отправку кубика (dice).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.dice присутствует
Данные: DiceData
$data->dice— объектDice$data->update$data->botId$data->getChat()$data->getUser()
onGame()
Заголовок раздела «onGame()»Обрабатывает отправку игры.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.game присутствует
Данные: GameData
$data->game— объектGame$data->update$data->botId$data->getChat()$data->getUser()
onChecklist()
Заголовок раздела «onChecklist()»Обрабатывает отправку чеклиста.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.checklist присутствует
Данные: ChecklistData
$data->checklist— объектChecklist$data->update$data->botId$data->getChat()$data->getUser()
Платежи
Заголовок раздела «Платежи»onInvoice()
Заголовок раздела «onInvoice()»Обрабатывает отправку счета (invoice).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.invoice присутствует
Данные: InvoiceData
$data->invoice— объектInvoice$data->update$data->botId$data->getChat()$data->getUser()
onSuccessfulPayment()
Заголовок раздела «onSuccessfulPayment()»Обрабатывает успешную оплату.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.successfulPayment присутствует
Данные: SuccessfulPaymentData
$data->successfulPayment— объектSuccessfulPayment$data->update$data->botId$data->getChat()$data->getUser()
onPassportData()
Заголовок раздела «onPassportData()»Обрабатывает данные Telegram Passport.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.passportData присутствует
Данные: PassportData
$data->passportData— объектPassportData$data->update$data->botId$data->getChat()$data->getUser()
Ответы и цитирование
Заголовок раздела «Ответы и цитирование»onReply()
Заголовок раздела «onReply()»Обрабатывает ответы на сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста ответа
Событие: message.replyToMessage присутствует
Данные: ReplyData
$data->replyToMessage— объектMessageна который отвечают$data->update$data->botId$data->getChat()$data->getUser()
onExternalReply()
Заголовок раздела «onExternalReply()»Обрабатывает ответы на сообщения из другого чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста ответа
Событие: message.externalReply присутствует
Данные: ExternalReplyData
$data->externalReply— объект внешнего ответа$data->update$data->botId$data->getChat()$data->getUser()
onQuote()
Заголовок раздела «onQuote()»Обрабатывает цитирование сообщений.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста цитаты
Событие: message.quote присутствует
Данные: QuoteData
$data->quote— объект цитаты$data->update$data->botId$data->getChat()$data->getUser()
onReplyToStory()
Заголовок раздела «onReplyToStory()»Обрабатывает ответы на истории.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста ответа
Событие: message.replyToStory присутствует
Данные: ReplyToStoryData
$data->replyToStory— объект ответа на историю$data->update$data->botId$data->getChat()$data->getUser()
Callback Query и Inline Query
Заголовок раздела «Callback Query и Inline Query»onCallbackQuery()
Заголовок раздела «onCallbackQuery()»Обрабатывает нажатия на inline кнопки.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчанию'*') — паттерн для action (например,'menu:*')$queryParams(?array<string, string|null>|array<int, QueryParamInterface>) — опциональные фильтры по query параметрам
Событие: callbackQuery присутствует
Данные: CallbackQueryData
$data->action— строка action из callback data$data->params— массив параметров из callback data$data->query— объектCallbackQuery$data->update$data->botId$data->getChat()$data->getUser()
Пример:
use HybridGram\Core\Routing\RouteOptions\QueryParams\Exist;use HybridGram\Core\Routing\RouteOptions\QueryParams\Value;
TelegramRouter::onCallbackQuery(function(CallbackQueryData $data) { // Обработка callback query}, '*', 'menu:*', [ new Exist('lang'), new Value('category', 'products')]);onInlineQuery()
Заголовок раздела «onInlineQuery()»Обрабатывает inline запросы.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста запроса
Событие: inlineQuery присутствует
Данные: InlineQueryData
$data->inlineQuery— объектInlineQuery$data->update$data->botId$data->getChat()$data->getUser()
События чата
Заголовок раздела «События чата»onNewChatMembers()
Заголовок раздела «onNewChatMembers()»Обрабатывает добавление новых участников в чат.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.newChatMembers присутствует
Данные: NewChatMembersData
$data->newChatMembers— массив новых участников$data->update$data->botId$data->getChat()$data->getUser()
onLeftChatMember()
Заголовок раздела «onLeftChatMember()»Обрабатывает выход участника из чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.leftChatMember присутствует
Данные: LeftChatMemberData
$data->leftChatMember— объект вышедшего участника$data->update$data->botId$data->getChat()$data->getUser()
onNewChatTitle()
Заголовок раздела «onNewChatTitle()»Обрабатывает изменение названия чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.newChatTitle присутствует
Данные: NewChatTitleData
$data->newChatTitle— новое название чата$data->update$data->botId$data->getChat()$data->getUser()
onNewChatPhoto()
Заголовок раздела «onNewChatPhoto()»Обрабатывает изменение фото чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.newChatPhoto присутствует
Данные: NewChatPhotoData
$data->newChatPhoto— массив новых фото$data->update$data->botId$data->getChat()$data->getUser()
onDeleteChatPhoto()
Заголовок раздела «onDeleteChatPhoto()»Обрабатывает удаление фото чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.deleteChatPhoto присутствует
Данные: DeleteChatPhotoData
$data->update$data->botId$data->getChat()$data->getUser()
onMessageAutoDeleteTimerChanged()
Заголовок раздела «onMessageAutoDeleteTimerChanged()»Обрабатывает изменение таймера автоудаления сообщений.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.autoDeleteTimerChanged присутствует
Данные: AutoDeleteTimerChangedData
$data->autoDeleteTimerChanged— объект с информацией о таймере$data->update$data->botId$data->getChat()$data->getUser()
onPinnedMessage()
Заголовок раздела «onPinnedMessage()»Обрабатывает закрепление сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.pinnedMessage присутствует
Данные: PinnedMessageData
$data->pinnedMessage— объект закрепленного сообщения$data->update$data->botId$data->getChat()$data->getUser()
onForumTopicEvent()
Заголовок раздела «onForumTopicEvent()»Обрабатывает события топика форума.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.forumTopicEvent присутствует
Данные: ForumTopicEventData
$data->forumTopicEvent— объект события топика$data->update$data->botId$data->getChat()$data->getUser()
onGeneralForumTopicEvent()
Заголовок раздела «onGeneralForumTopicEvent()»Обрабатывает события общего топика форума.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.generalForumTopicEvent присутствует
Данные: GeneralForumTopicEventData
$data->generalForumTopicEvent— объект события общего топика$data->update$data->botId$data->getChat()$data->getUser()
onBoostAdded()
Заголовок раздела «onBoostAdded()»Обрабатывает добавление буста в чат.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.boostAdded присутствует
Данные: BoostAddedData
$data->boostAdded— объект с информацией о бусте$data->update$data->botId$data->getChat()$data->getUser()
Обновления статуса участников
Заголовок раздела «Обновления статуса участников»onMyChatMember()
Заголовок раздела «onMyChatMember()»Обрабатывает изменения статуса бота в чате.
Параметры:
$action— обработчик$chatMemberOptions(?ChatMemberOptions) — опции фильтрации (по умолчаниюnull)
Событие: myChatMember присутствует
Данные: ChatMemberUpdatedData
$data->chatMemberUpdated— объектChatMemberUpdated$data->update$data->botId$data->getChat()$data->getUser()
Примечание: По умолчанию работает во всех типах чатов (PRIVATE, GROUP, SUPERGROUP, CHANNEL).
Пример:
use HybridGram\Core\Routing\RouteOptions\ChatMemberOptions;use HybridGram\Telegram\ChatMember\ChatMemberStatus;
// Обработка добавления бота в группу/канал (работает во всех типах чатов)TelegramRouter::onMyChatMember(function(ChatMemberUpdatedData $data) { $chat = $data->getChat(); $status = $data->chatMemberUpdated->newChatMember->getStatus();
if ($status === ChatMemberStatus::MEMBER->value) { // Бот добавлен в чат }});
// С фильтрацией по статусамTelegramRouter::onMyChatMember( function(ChatMemberUpdatedData $data) { // Обработка только когда бот становится участником }, new ChatMemberOptions( isBot: true, allowedStatuses: [ChatMemberStatus::MEMBER] ));onChatMember()
Заголовок раздела «onChatMember()»Обрабатывает изменения статуса участника чата.
Параметры:
$action— обработчик$chatMemberOptions(?ChatMemberOptions) — опции фильтрации (по умолчаниюnull)
Событие: chatMember присутствует
Данные: ChatMemberUpdatedData
$data->chatMemberUpdated— объектChatMemberUpdated$data->update$data->botId$data->getChat()$data->getUser()
Примечание: По умолчанию работает во всех типах чатов (PRIVATE, GROUP, SUPERGROUP, CHANNEL).
Пример:
use HybridGram\Core\Routing\RouteOptions\ChatMemberOptions;use HybridGram\Telegram\ChatMember\ChatMemberStatus;
// Обработка изменения статуса участника (работает во всех типах чатов)TelegramRouter::onChatMember(function(ChatMemberUpdatedData $data) { $user = $data->chatMemberUpdated->newChatMember->getUser(); $status = $data->chatMemberUpdated->newChatMember->getStatus(); // ...});
// С фильтрациейTelegramRouter::onChatMember( function(ChatMemberUpdatedData $data) { // Обработка только для ботов, которые становятся администраторами }, new ChatMemberOptions( isBot: true, allowedStatuses: [ChatMemberStatus::ADMINISTRATOR] ));Универсальные роуты
Заголовок раздела «Универсальные роуты»onAny()
Заголовок раздела «onAny()»Обрабатывает любые обновления.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: Любое обновление
Данные: AnyData
$data->update$data->botId$data->getChat()$data->getUser()
onFallback()
Заголовок раздела «onFallback()»Обрабатывает обновления, для которых не найден подходящий роут.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: Обновление, не соответствующее ни одному роуту
Данные: FallbackData
$data->update$data->botId$data->getChat()$data->getUser()
Примечание: В режиме разработки (app()->isLocal()) fallback автоматически отправляет информацию о состоянии для отладки.
Вспомогательные методы
Заголовок раздела «Вспомогательные методы»forBot()
Заголовок раздела «forBot()»Возвращает билдер роутов для конкретного бота.
Параметры:
$botId(string) — ID бота
Возвращает: TelegramRouteBuilder
Пример:
TelegramRouter::forBot('main') ->onCommand('/start', function(CommandData $data) { // Роут только для бота 'main' });group()
Заголовок раздела «group()»Группирует роуты с общими атрибутами.
Параметры:
$attributes(array) — массив атрибутов (например,['for_bot' => 'main', 'chat_type' => ChatType::GROUP, 'middlewares' => [...])$callback(\Closure) — функция, которая получаетTelegramRouteBuilderв качестве параметра
Атрибуты группы:
for_bot(string) — ID ботаchat_type(ChatType|ChatType[]|null) — тип чата или массив типов (null = все типы)middlewares(array) — массив middleware классовfrom_state(array) — массив состояний, из которых должен быть переходto_state(string) — состояние, в которое нужно перейти
Пример:
use HybridGram\Core\Routing\ChatType;
TelegramRouter::group([ 'for_bot' => 'main', 'chat_type' => ChatType::GROUP, 'middlewares' => [AuthTelegramRouteMiddleware::class],], function($router) { $router->onCommand('/admin', function(CommandData $data) { // Роут с общими атрибутами группы });});
// Несколько типов чатов в группеTelegramRouter::group([ 'for_bot' => 'main', 'chat_type' => [ChatType::PRIVATE, ChatType::GROUP],], function($router) { $router->onMessage(function(TextMessageData $data) { // Роут работает в приватных чатах и группах });});chatType()
Заголовок раздела «chatType()»Устанавливает один тип чата для роута (для обратной совместимости).
Параметры:
$chatType(ChatType) — тип чата
Возвращает: TelegramRouteBuilder
Пример:
use HybridGram\Core\Routing\ChatType;
TelegramRouter::forBot('main') ->chatType(ChatType::PRIVATE) ->onCommand('/start', function(CommandData $data) { // Роут только для приватных чатов });chatTypes()
Заголовок раздела «chatTypes()»Устанавливает несколько типов чатов для роута или разрешает все типы.
Параметры:
$chatTypes(ChatType[]|null) — массив типов чатов илиnullдля всех типов
Возвращает: TelegramRouteBuilder
Пример:
use HybridGram\Core\Routing\ChatType;
// Несколько типовTelegramRouter::forBot('main') ->chatTypes([ChatType::PRIVATE, ChatType::GROUP]) ->onCommand('/help', function(CommandData $data) { // Роут работает в приватных чатах и группах });
// Все типы чатовTelegramRouter::forBot('main') ->chatTypes(null) ->onMyChatMember(function(ChatMemberUpdatedData $data) { // Роут работает во всех типах чатов });Примечание: Для групповых событий (например, onMyChatMember, onNewChatTitle) по умолчанию разрешены все типы чатов. Для остальных роутов по умолчанию используется только ChatType::PRIVATE.
Типы данных для фильтрации
Заголовок раздела «Типы данных для фильтрации»MimeType
Заголовок раздела «MimeType»Enum для фильтрации документов по MIME-типу:
use HybridGram\Telegram\Document\MimeType;
MimeType::PNGMimeType::JPEGMimeType::WEBPMimeType::GIFMimeType::PDFMimeType::MP4MimeType::MPEGMimeType::MOVMimeType::HTMLMimeType::JSONPollType
Заголовок раздела «PollType»Enum для фильтрации опросов по типу:
use HybridGram\Telegram\Poll\PollType;
PollType::REGULAR // Обычный опросPollType::QUIZ // ВикторинаChatMemberStatus
Заголовок раздела «ChatMemberStatus»Enum для фильтрации по статусу участника чата:
use HybridGram\Telegram\ChatMember\ChatMemberStatus;
ChatMemberStatus::CREATORChatMemberStatus::ADMINISTRATORChatMemberStatus::MEMBERChatMemberStatus::RESTRICTEDChatMemberStatus::LEFTChatMemberStatus::KICKEDChatType
Заголовок раздела «ChatType»Enum для фильтрации роутов по типу чата:
use HybridGram\Core\Routing\ChatType;
ChatType::PRIVATE // Приватные чаты (личные сообщения)ChatType::GROUP // ГруппыChatType::SUPERGROUP // СупергруппыChatType::CHANNEL // КаналыИспользование:
// Один типTelegramRouter::forBot('main') ->chatType(ChatType::PRIVATE) ->onCommand('/start', function(CommandData $data) { // ... });
// Несколько типовTelegramRouter::forBot('main') ->chatTypes([ChatType::PRIVATE, ChatType::GROUP]) ->onMessage(function(TextMessageData $data) { // ... });
// Все типы (null)TelegramRouter::forBot('main') ->chatTypes(null) ->onMyChatMember(function(ChatMemberUpdatedData $data) { // ... });