Skip to content

Справочник по роутингу

Справочник по роутингу

Section titled “Справочник по роутингу”

Этот раздел содержит полный список всех доступных методов роутинга из фасада TelegramRouter. Каждый метод описывает, какие параметры он принимает, на какие события Telegram реагирует и какие данные передаются в обработчик.

Большинство методов роутинга принимают следующие общие параметры:

  • $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

Обрабатывает команды, начинающиеся с /.

Параметры:

  • $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;
});

Обрабатывает текстовые сообщения.

Параметры:

  • $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) {
// Обработка сообщений с паттерном
}, '*', 'привет*');

Обрабатывает отправленные фотографии.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (callable|null, по умолчанию null) — паттерн для подписи (caption)

Событие: message.photo присутствует

Данные: PhotoData

  • $data->photoSizes — массив объектов PhotoSize
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает группы фотографий (альбомы).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.photo присутствует и message.mediaGroupId установлен

Данные: PhotoMediaGroupData

  • $data->photos — массив всех фотографий в группе
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправленные документы.

Параметры:

  • $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]);

Обрабатывает анимации (GIF).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.animation присутствует

Данные: AnimationData

  • $data->animation — объект Animation
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает аудио файлы.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.audio присутствует

Данные: AudioData

  • $data->audio — объект Audio
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает стикеры.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.sticker присутствует

Данные: StickerData

  • $data->sticker — объект Sticker
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает видеосообщения (круглые видео).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.videoNote присутствует

Данные: VideoNoteData

  • $data->videoNote — объект VideoNote
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает голосовые сообщения.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.voice присутствует

Данные: VoiceData

  • $data->voice — объект Voice
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает истории (stories).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.story присутствует

Данные: StoryData

  • $data->story — объект Story
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает платный медиа контент.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для подписи

Событие: message.paidMedia присутствует

Данные: PaidMediaData

  • $data->paidMedia — объект платного медиа
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку геолокации.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.location присутствует

Данные: LocationData

  • $data->location — объект Location
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку места (venue).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.venue присутствует

Данные: VenueData

  • $data->venue — объект Venue
  • $data->location — объект Location
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку контакта.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.contact присутствует

Данные: ContactData

  • $data->contact — объект Contact
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает создание опроса.

Параметры:

  • $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);

Обрабатывает ответы на опрос.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (callable|null, по умолчанию null) — опциональный паттерн
  • $isAnonymous (?bool) — фильтр по анонимности опроса
  • $pollType (?PollType) — фильтр по типу опроса

Событие: pollAnswer присутствует

Данные: PollAnswerData

  • $data->pollAnswer — объект PollAnswer
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает закрытие опроса.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (callable|null, по умолчанию null) — опциональный паттерн
  • $isAnonymous (?bool) — фильтр по анонимности опроса
  • $pollType (?PollType) — фильтр по типу опроса

Событие: pollClosed присутствует

Данные: PollClosedData

  • $data->pollClosed — объект PollClosed
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку кубика (dice).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.dice присутствует

Данные: DiceData

  • $data->dice — объект Dice
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку игры.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.game присутствует

Данные: GameData

  • $data->game — объект Game
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку чеклиста.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.checklist присутствует

Данные: ChecklistData

  • $data->checklist — объект Checklist
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает отправку счета (invoice).

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.invoice присутствует

Данные: InvoiceData

  • $data->invoice — объект Invoice
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает успешную оплату.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.successfulPayment присутствует

Данные: SuccessfulPaymentData

  • $data->successfulPayment — объект SuccessfulPayment
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает данные Telegram Passport.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.passportData присутствует

Данные: PassportData

  • $data->passportData — объект PassportData
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает ответы на сообщения.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для текста ответа

Событие: message.replyToMessage присутствует

Данные: ReplyData

  • $data->replyToMessage — объект Message на который отвечают
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает ответы на сообщения из другого чата.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для текста ответа

Событие: message.externalReply присутствует

Данные: ExternalReplyData

  • $data->externalReply — объект внешнего ответа
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает цитирование сообщений.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для текста цитаты

Событие: message.quote присутствует

Данные: QuoteData

  • $data->quote — объект цитаты
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает ответы на истории.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для текста ответа

Событие: message.replyToStory присутствует

Данные: ReplyToStoryData

  • $data->replyToStory — объект ответа на историю
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает нажатия на 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')
]);

Обрабатывает inline запросы.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота
  • $pattern (по умолчанию null) — паттерн для текста запроса

Событие: inlineQuery присутствует

Данные: InlineQueryData

  • $data->inlineQuery — объект InlineQuery
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает добавление новых участников в чат.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.newChatMembers присутствует

Данные: NewChatMembersData

  • $data->newChatMembers — массив новых участников
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает выход участника из чата.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.leftChatMember присутствует

Данные: LeftChatMemberData

  • $data->leftChatMember — объект вышедшего участника
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает изменение названия чата.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.newChatTitle присутствует

Данные: NewChatTitleData

  • $data->newChatTitle — новое название чата
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает изменение фото чата.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.newChatPhoto присутствует

Данные: NewChatPhotoData

  • $data->newChatPhoto — массив новых фото
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает удаление фото чата.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.deleteChatPhoto присутствует

Данные: DeleteChatPhotoData

  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает изменение таймера автоудаления сообщений.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.autoDeleteTimerChanged присутствует

Данные: AutoDeleteTimerChangedData

  • $data->autoDeleteTimerChanged — объект с информацией о таймере
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает закрепление сообщения.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.pinnedMessage присутствует

Данные: PinnedMessageData

  • $data->pinnedMessage — объект закрепленного сообщения
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает события топика форума.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.forumTopicEvent присутствует

Данные: ForumTopicEventData

  • $data->forumTopicEvent — объект события топика
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает события общего топика форума.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.generalForumTopicEvent присутствует

Данные: GeneralForumTopicEventData

  • $data->generalForumTopicEvent — объект события общего топика
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает добавление буста в чат.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: message.boostAdded присутствует

Данные: BoostAddedData

  • $data->boostAdded — объект с информацией о бусте
  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обновления статуса участников

Section titled “Обновления статуса участников”

Обрабатывает изменения статуса бота в чате.

Параметры:

  • $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]
)
);

Обрабатывает изменения статуса участника чата.

Параметры:

  • $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]
)
);

Обрабатывает любые обновления.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: Любое обновление

Данные: AnyData

  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Обрабатывает обновления, для которых не найден подходящий роут.

Параметры:

  • $action — обработчик
  • $botId (по умолчанию '*') — ID бота

Событие: Обновление, не соответствующее ни одному роуту

Данные: FallbackData

  • $data->update
  • $data->botId
  • $data->getChat()
  • $data->getUser()

Примечание: В режиме разработки (app()->isLocal()) fallback автоматически отправляет информацию о состоянии для отладки.

Вспомогательные методы

Section titled “Вспомогательные методы”

Возвращает билдер роутов для конкретного бота.

Параметры:

  • $botId (string) — ID бота

Возвращает: TelegramRouteBuilder

Пример:

TelegramRouter::forBot('main')
->onCommand('/start', function(CommandData $data) {
// Роут только для бота 'main'
});

Группирует роуты с общими атрибутами.

Параметры:

  • $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 (ChatType) — тип чата

Возвращает: TelegramRouteBuilder

Пример:

use HybridGram\Core\Routing\ChatType;
TelegramRouter::forBot('main')
->chatType(ChatType::PRIVATE)
->onCommand('/start', function(CommandData $data) {
// Роут только для приватных чатов
});

Устанавливает несколько типов чатов для роута или разрешает все типы.

Параметры:

  • $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 “Типы данных для фильтрации”

Enum для фильтрации документов по MIME-типу:

use HybridGram\Telegram\Document\MimeType;
MimeType::PNG
MimeType::JPEG
MimeType::WEBP
MimeType::GIF
MimeType::PDF
MimeType::MP4
MimeType::MPEG
MimeType::MOV
MimeType::HTML
MimeType::JSON

Enum для фильтрации опросов по типу:

use HybridGram\Telegram\Poll\PollType;
PollType::REGULAR // Обычный опрос
PollType::QUIZ // Викторина

Enum для фильтрации по статусу участника чата:

use HybridGram\Telegram\ChatMember\ChatMemberStatus;
ChatMemberStatus::CREATOR
ChatMemberStatus::ADMINISTRATOR
ChatMemberStatus::MEMBER
ChatMemberStatus::RESTRICTED
ChatMemberStatus::LEFT
ChatMemberStatus::KICKED

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) {
// ...
});