Команди
Команди — це спеціальні сутності в повідомленнях 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 підтримує надсилання цільових команд ботам, тобто команд, які закінчуються на @your
. grammY обробляє це автоматично за вас, тому bot
оброблятиме повідомлення з /start
або /start@your
як команди. Ви можете обробляти лише цільові команди, вказавши 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
Перегляньте розділ про deep linking у можливостях ботів Telegram, створений командою Telegram.
Коли користувач відвідує https://
, його клієнт Telegram покаже кнопку СТАРТ, яка при натисканні надсилає текст із параметра URL-адреси разом із повідомленням: у цьому прикладі текст повідомлення буде "
. Клієнти Telegram не відображатимуть ці дані (payload
) для користувача: вони бачитимуть лише "
в інтерфейсі користувача, однак ваш бот їх отримає. grammY розпізнає ці дані і надасть доступ до них в ctx
. У нашому прикладі з наведеним вище посиланням ctx
міститиме текст "payload"
.
Deep linking корисний, якщо ви хочете створити реферальну систему або відстежувати, звідки користувачі дізналися про вашого бота. Наприклад, ваш бот може надіслати допис каналу з вбудованою клавіатурою. Кнопка містить URL-адресу, подібну до наведеної вище: наприклад, https://
. Коли користувач натискає кнопку під дописом, його клієнт Telegram відкриє чат із вашим ботом і відобразить кнопку СТАРТ, як описано вище. Таким чином ваш бот може визначити, звідки прийшов користувач, і що він натиснув кнопку під певним дописом на каналі.
Ви також можете вставляти такі посилання де завгодно: в Інтернеті, у повідомленнях, у QR-кодах тощо.
Перегляньте цей розділ документації Telegram, щоб побачити повний список можливих форматів посилань. Вони також дозволяють запропонувати користувачам додати вашого бота до груп або каналів і за бажанням надати вашому боту необхідні права адміністратора.