Команды
Команды — это специальные объекты в сообщениях Telegram, которые служат инструкциями для ботов.
Использование
Пересмотрите раздел “Команды” в статье Функции Telegram Ботов, написанной командой Telegram.
В grammY предусмотрена специальная обработка команд (например, /start
и /help
). Вы можете напрямую зарегистрировать слушатели для определенных команд через bot
.
// Ответить на команду /start.
bot.command("start" /* , ... */);
// Ответить на команду /help.
bot.command("help" /* , ... */);
// Ответить на команды /a, /b, /c, и /d.
bot.command(["a", "b", "c", "d"] /* , ... */);
2
3
4
5
6
Обратите внимание, что обрабатываются только те команды, которые находятся в начале сообщения, поэтому если пользователь отправит "Пожалуйста
, то ваш слушатель не будет вызван, даже если команда /start
содержится в сообщении.
Telegram поддерживает отправку целевых команд ботам, то есть команд, которые заканчиваются на @имя
. grammY делает это автоматически, поэтому bot
будет соответствовать сообщениям с /start
и с /start@имя
в качестве команд. Вы можете выбрать соответствие только целевым командам, указав bot
.
Предлагать команды пользователям
Вы можете вызвать
await bot.api.setMyCommands([
{ command: "start", description: "Запустить бота" },
{ command: "help", description: "Показать текст для справки" },
{ command: "settings", description: "Открыть настройки" },
]);
2
3
4
5
чтобы клиенты Telegram отображали список предлагаемых команд в поле ввода текста.
Также вы можете настроить это, обратившись к @Bot
Аргументы
Пользователи могут отправлять аргументы вместе со своими командами. Вы можете получить доступ к строке аргументов через ctx
.
bot.command("add", async (ctx) => {
// `item` будет "яблочный пирог" если пользователь отправит "/add яблочный пирог".
const item = ctx.match;
});
2
3
4
Обратите внимание, что вы всегда можете получить доступ ко всему тексту сообщения через ctx
.
Поддержка Deep Linking
Пересмотрите раздел о глубокой перелинковке в статье Функции Telegram Ботов, написанной командой Telegram.
Когда пользователь заходит на https://
, его Telegram-клиент покажет кнопку ЗАПУСТИТЬ, которая (при нажатии) отправит строку из URL-параметра вместе с сообщением, в данном примере текст сообщения будет "
. Клиенты Telegram не покажет payload пользователю (он увидит только "
в пользовательском интерфейсе), однако ваш бот получит его. grammY извлекает этот payload для вас и предоставляет её в ctx
. В нашем примере с приведенной выше ссылкой ctx
будет содержать строку "payload"
.
Deep Linking полезен, если вы хотите построить реферальную систему или отследить, где пользователи обнаружили вашего бота. Например, ваш бот может отправить сообщение на канал с кнопкой встроенной клавиатуры. Кнопка содержит URL-адрес, как показано выше, например https://
. Когда пользователь нажмет на кнопку под постом, его клиент Telegram откроет чат с вашим ботом и отобразит кнопку ЗАПУСТИТЬ, как описано выше. Таким образом, ваш бот сможет определить, откуда пришел пользователь, и что он нажал на кнопку под постом конкретного канала.
Естественно, вы можете встраивать такие ссылки куда угодно: в интернет, в сообщения, в QR-коды и т.д.
Посмотрите этот раздел документации Telegram, чтобы увидеть полный список возможных форматов ссылок. Кроме того, они позволяют предложить пользователям добавить вашего бота в группы или каналы, а также по желанию предоставить ему необходимые права администратора.