Справочник по роутингу
Справочник по роутингу
Section titled “Справочник по роутингу”Этот раздел содержит полный список всех доступных методов роутинга из фасада TelegramRouter. Каждый метод описывает, какие параметры он принимает, на какие события Telegram реагирует и какие данные передаются в обработчик.
Общие параметры
Section titled “Общие параметры”Большинство методов роутинга принимают следующие общие параметры:
$action(array|string|\Closure) — обработчик роута. Может быть:- Closure/функция
- Строка в формате
'Controller@method' - Массив
[Controller::class, 'method']
$botId(string, по умолчанию'*') — ID бота, для которого регистрируется роут.'*'означает все боты$pattern(\Closure|string|null) — паттерн для фильтрации. Может быть:- Строка с поддержкой
*(wildcard) - Closure для кастомной проверки
nullили'*'для обработки всех событий данного типа
- Строка с поддержкой
Все обработчики получают объект данных, который наследуется от AbstractRouteData и содержит:
$data->update— полный объектUpdateот Telegram$data->botId— ID бота$data->getChat()— метод для получения объектаChat$data->getUser()— метод для получения объектаUser
Команды и сообщения
Section titled “Команды и сообщения”onCommand()
Section titled “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()
Section titled “onMessage()”Обрабатывает текстовые сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста сообщения
Событие: message.text присутствует
Данные: MessageData
$data->message— текст сообщения$data->update$data->botId$data->getChat()$data->getUser()
Пример:
TelegramRouter::onMessage(function(MessageData $data) { // Обработка всех сообщений});
TelegramRouter::onMessage(function(MessageData $data) { // Обработка сообщений с паттерном}, '*', 'привет*');Медиа контент
Section titled “Медиа контент”onPhoto()
Section titled “onPhoto()”Обрабатывает отправленные фотографии.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(callable|null, по умолчаниюnull) — паттерн для подписи (caption)
Событие: message.photo присутствует
Данные: PhotoData
$data->photoSizes— массив объектовPhotoSize$data->update$data->botId$data->getChat()$data->getUser()
onPhotoMediaGroup()
Section titled “onPhotoMediaGroup()”Обрабатывает группы фотографий (альбомы).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.photo присутствует и message.mediaGroupId установлен
Данные: PhotoMediaGroupData
$data->photos— массив всех фотографий в группе$data->update$data->botId$data->getChat()$data->getUser()
onDocument()
Section titled “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()
Section titled “onAnimation()”Обрабатывает анимации (GIF).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.animation присутствует
Данные: AnimationData
$data->animation— объектAnimation$data->update$data->botId$data->getChat()$data->getUser()
onAudio()
Section titled “onAudio()”Обрабатывает аудио файлы.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.audio присутствует
Данные: AudioData
$data->audio— объектAudio$data->update$data->botId$data->getChat()$data->getUser()
onSticker()
Section titled “onSticker()”Обрабатывает стикеры.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.sticker присутствует
Данные: StickerData
$data->sticker— объектSticker$data->update$data->botId$data->getChat()$data->getUser()
onVideoNote()
Section titled “onVideoNote()”Обрабатывает видеосообщения (круглые видео).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.videoNote присутствует
Данные: VideoNoteData
$data->videoNote— объектVideoNote$data->update$data->botId$data->getChat()$data->getUser()
onVoice()
Section titled “onVoice()”Обрабатывает голосовые сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.voice присутствует
Данные: VoiceData
$data->voice— объектVoice$data->update$data->botId$data->getChat()$data->getUser()
onStory()
Section titled “onStory()”Обрабатывает истории (stories).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.story присутствует
Данные: StoryData
$data->story— объектStory$data->update$data->botId$data->getChat()$data->getUser()
onPaidMedia()
Section titled “onPaidMedia()”Обрабатывает платный медиа контент.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для подписи
Событие: message.paidMedia присутствует
Данные: PaidMediaData
$data->paidMedia— объект платного медиа$data->update$data->botId$data->getChat()$data->getUser()
Геолокация и контакты
Section titled “Геолокация и контакты”onLocation()
Section titled “onLocation()”Обрабатывает отправку геолокации.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.location присутствует
Данные: LocationData
$data->location— объектLocation$data->update$data->botId$data->getChat()$data->getUser()
onVenue()
Section titled “onVenue()”Обрабатывает отправку места (venue).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.venue присутствует
Данные: VenueData
$data->venue— объектVenue$data->location— объектLocation$data->update$data->botId$data->getChat()$data->getUser()
onContact()
Section titled “onContact()”Обрабатывает отправку контакта.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.contact присутствует
Данные: ContactData
$data->contact— объектContact$data->update$data->botId$data->getChat()$data->getUser()
Опросы
Section titled “Опросы”onPoll()
Section titled “onPoll()”Обрабатывает создание опроса.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(callable|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()
Section titled “onPollAnswered()”Обрабатывает ответы на опрос.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(callable|null, по умолчаниюnull) — опциональный паттерн$isAnonymous(?bool) — фильтр по анонимности опроса$pollType(?PollType) — фильтр по типу опроса
Событие: pollAnswer присутствует
Данные: PollAnswerData
$data->pollAnswer— объектPollAnswer$data->update$data->botId$data->getChat()$data->getUser()
onPollClosed()
Section titled “onPollClosed()”Обрабатывает закрытие опроса.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(callable|null, по умолчаниюnull) — опциональный паттерн$isAnonymous(?bool) — фильтр по анонимности опроса$pollType(?PollType) — фильтр по типу опроса
Событие: pollClosed присутствует
Данные: PollClosedData
$data->pollClosed— объектPollClosed$data->update$data->botId$data->getChat()$data->getUser()
Игры и развлечения
Section titled “Игры и развлечения”onDice()
Section titled “onDice()”Обрабатывает отправку кубика (dice).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.dice присутствует
Данные: DiceData
$data->dice— объектDice$data->update$data->botId$data->getChat()$data->getUser()
onGame()
Section titled “onGame()”Обрабатывает отправку игры.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.game присутствует
Данные: GameData
$data->game— объектGame$data->update$data->botId$data->getChat()$data->getUser()
onChecklist()
Section titled “onChecklist()”Обрабатывает отправку чеклиста.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.checklist присутствует
Данные: ChecklistData
$data->checklist— объектChecklist$data->update$data->botId$data->getChat()$data->getUser()
Платежи
Section titled “Платежи”onInvoice()
Section titled “onInvoice()”Обрабатывает отправку счета (invoice).
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.invoice присутствует
Данные: InvoiceData
$data->invoice— объектInvoice$data->update$data->botId$data->getChat()$data->getUser()
onSuccessfulPayment()
Section titled “onSuccessfulPayment()”Обрабатывает успешную оплату.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.successfulPayment присутствует
Данные: SuccessfulPaymentData
$data->successfulPayment— объектSuccessfulPayment$data->update$data->botId$data->getChat()$data->getUser()
onPassportData()
Section titled “onPassportData()”Обрабатывает данные Telegram Passport.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.passportData присутствует
Данные: PassportData
$data->passportData— объектPassportData$data->update$data->botId$data->getChat()$data->getUser()
Ответы и цитирование
Section titled “Ответы и цитирование”onReply()
Section titled “onReply()”Обрабатывает ответы на сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста ответа
Событие: message.replyToMessage присутствует
Данные: ReplyData
$data->replyToMessage— объектMessageна который отвечают$data->update$data->botId$data->getChat()$data->getUser()
onExternalReply()
Section titled “onExternalReply()”Обрабатывает ответы на сообщения из другого чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста ответа
Событие: message.externalReply присутствует
Данные: ExternalReplyData
$data->externalReply— объект внешнего ответа$data->update$data->botId$data->getChat()$data->getUser()
onQuote()
Section titled “onQuote()”Обрабатывает цитирование сообщений.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста цитаты
Событие: message.quote присутствует
Данные: QuoteData
$data->quote— объект цитаты$data->update$data->botId$data->getChat()$data->getUser()
onReplyToStory()
Section titled “onReplyToStory()”Обрабатывает ответы на истории.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста ответа
Событие: message.replyToStory присутствует
Данные: ReplyToStoryData
$data->replyToStory— объект ответа на историю$data->update$data->botId$data->getChat()$data->getUser()
Callback Query и Inline Query
Section titled “Callback Query и Inline Query”onCallbackQuery()
Section titled “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()
Section titled “onInlineQuery()”Обрабатывает inline запросы.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота$pattern(по умолчаниюnull) — паттерн для текста запроса
Событие: inlineQuery присутствует
Данные: InlineQueryData
$data->inlineQuery— объектInlineQuery$data->update$data->botId$data->getChat()$data->getUser()
События чата
Section titled “События чата”onNewChatMembers()
Section titled “onNewChatMembers()”Обрабатывает добавление новых участников в чат.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.newChatMembers присутствует
Данные: NewChatMembersData
$data->newChatMembers— массив новых участников$data->update$data->botId$data->getChat()$data->getUser()
onLeftChatMember()
Section titled “onLeftChatMember()”Обрабатывает выход участника из чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.leftChatMember присутствует
Данные: LeftChatMemberData
$data->leftChatMember— объект вышедшего участника$data->update$data->botId$data->getChat()$data->getUser()
onNewChatTitle()
Section titled “onNewChatTitle()”Обрабатывает изменение названия чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.newChatTitle присутствует
Данные: NewChatTitleData
$data->newChatTitle— новое название чата$data->update$data->botId$data->getChat()$data->getUser()
onNewChatPhoto()
Section titled “onNewChatPhoto()”Обрабатывает изменение фото чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.newChatPhoto присутствует
Данные: NewChatPhotoData
$data->newChatPhoto— массив новых фото$data->update$data->botId$data->getChat()$data->getUser()
onDeleteChatPhoto()
Section titled “onDeleteChatPhoto()”Обрабатывает удаление фото чата.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.deleteChatPhoto присутствует
Данные: DeleteChatPhotoData
$data->update$data->botId$data->getChat()$data->getUser()
onMessageAutoDeleteTimerChanged()
Section titled “onMessageAutoDeleteTimerChanged()”Обрабатывает изменение таймера автоудаления сообщений.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.autoDeleteTimerChanged присутствует
Данные: AutoDeleteTimerChangedData
$data->autoDeleteTimerChanged— объект с информацией о таймере$data->update$data->botId$data->getChat()$data->getUser()
onPinnedMessage()
Section titled “onPinnedMessage()”Обрабатывает закрепление сообщения.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.pinnedMessage присутствует
Данные: PinnedMessageData
$data->pinnedMessage— объект закрепленного сообщения$data->update$data->botId$data->getChat()$data->getUser()
onForumTopicEvent()
Section titled “onForumTopicEvent()”Обрабатывает события топика форума.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.forumTopicEvent присутствует
Данные: ForumTopicEventData
$data->forumTopicEvent— объект события топика$data->update$data->botId$data->getChat()$data->getUser()
onGeneralForumTopicEvent()
Section titled “onGeneralForumTopicEvent()”Обрабатывает события общего топика форума.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.generalForumTopicEvent присутствует
Данные: GeneralForumTopicEventData
$data->generalForumTopicEvent— объект события общего топика$data->update$data->botId$data->getChat()$data->getUser()
onBoostAdded()
Section titled “onBoostAdded()”Обрабатывает добавление буста в чат.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: message.boostAdded присутствует
Данные: BoostAddedData
$data->boostAdded— объект с информацией о бусте$data->update$data->botId$data->getChat()$data->getUser()
Обновления статуса участников
Section titled “Обновления статуса участников”onMyChatMember()
Section titled “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()
Section titled “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] ));Универсальные роуты
Section titled “Универсальные роуты”onAny()
Section titled “onAny()”Обрабатывает любые обновления.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: Любое обновление
Данные: AnyData
$data->update$data->botId$data->getChat()$data->getUser()
onFallback()
Section titled “onFallback()”Обрабатывает обновления, для которых не найден подходящий роут.
Параметры:
$action— обработчик$botId(по умолчанию'*') — ID бота
Событие: Обновление, не соответствующее ни одному роуту
Данные: FallbackData
$data->update$data->botId$data->getChat()$data->getUser()
Примечание: В режиме разработки (app()->isLocal()) fallback автоматически отправляет информацию о состоянии для отладки.
Вспомогательные методы
Section titled “Вспомогательные методы”forBot()
Section titled “forBot()”Возвращает билдер роутов для конкретного бота.
Параметры:
$botId(string) — ID бота
Возвращает: TelegramRouteBuilder
Пример:
TelegramRouter::forBot('main') ->onCommand('/start', function(CommandData $data) { // Роут только для бота 'main' });group()
Section titled “group()”Группирует роуты с общими атрибутами.
Параметры:
$attributes(array) — массив атрибутов (например,['for_bot' => 'main', 'chat_type' => ChatType::GROUP, 'middlewares' => [...])$callback(callable) — функция, которая получает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(MessageData $data) { // Роут работает в приватных чатах и группах });});chatType()
Section titled “chatType()”Устанавливает один тип чата для роута (для обратной совместимости).
Параметры:
$chatType(ChatType) — тип чата
Возвращает: TelegramRouteBuilder
Пример:
use HybridGram\Core\Routing\ChatType;
TelegramRouter::forBot('main') ->chatType(ChatType::PRIVATE) ->onCommand('/start', function(CommandData $data) { // Роут только для приватных чатов });chatTypes()
Section titled “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.
Типы данных для фильтрации
Section titled “Типы данных для фильтрации”MimeType
Section titled “MimeType”Enum для фильтрации документов по MIME-типу:
use HybridGram\Telegram\Document\MimeType;
MimeType::PNGMimeType::JPEGMimeType::WEBPMimeType::GIFMimeType::PDFMimeType::MP4MimeType::MPEGMimeType::MOVMimeType::HTMLMimeType::JSONPollType
Section titled “PollType”Enum для фильтрации опросов по типу:
use HybridGram\Telegram\Poll\PollType;
PollType::REGULAR // Обычный опросPollType::QUIZ // ВикторинаChatMemberStatus
Section titled “ChatMemberStatus”Enum для фильтрации по статусу участника чата:
use HybridGram\Telegram\ChatMember\ChatMemberStatus;
ChatMemberStatus::CREATORChatMemberStatus::ADMINISTRATORChatMemberStatus::MEMBERChatMemberStatus::RESTRICTEDChatMemberStatus::LEFTChatMemberStatus::KICKEDChatType
Section titled “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(MessageData $data) { // ... });
// Все типы (null)TelegramRouter::forBot('main') ->chatTypes(null) ->onMyChatMember(function(ChatMemberUpdatedData $data) { // ... });