Команди
Команди — це спеціальні сутності в повідомленнях 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, щоб побачити повний список можливих форматів посилань. Вони також дозволяють запропонувати користувачам додати вашого бота до груп або каналів і за бажанням надати вашому боту необхідні права адміністратора.