З допомогою роботів можна спростити собі завдання комунікації з користувачами, створивши їм розумного помічника. Боти розуміють текстові команди і можуть звертатися до API вашого веб-сайту, сервісу або бути самостійним продуктом з унікальними послугами. Зазвичай для створення бота потрібен сервер, але в цій статті ми розберемо підхід, що дозволяє обійтися без нього. Він ідеальний при різких коливаннях кількості запитів та чудово витримує пікові навантаження.
Налаштувати Телеграм-бота на Хмарних функціях, використовуючи офіційний API та заготовлений нами приклад, можна у 3 етапи:
- Запрограмувати логіку роботи телеграм-бота.
- Зареєструвати нового бота в Telegram.
- Зв’язати робота і його логіку воєдино.
Запрограмувати логіку роботи Телеграм-бота
Щоб спростити завдання, ми написали приклад такого робота. Його вихідний код доступний за посиланням github.com/selectel/cloud-telegram-bot . Він розуміє команди:
/start
із вітальним повідомленням;/sticker
з відповіддю у вигляді стікера;/getwebhook
щоб ви могли отримати інформацію про налаштування вашого робота;/setwebhook
для налаштування вашого робота, але про це пізніше.
Пройдіть наступні кроки з нашим прикладом робота, щоб освоїтися:
- Завантажте вихідний код як архів (Clone or download → Download ZIP) і розпакуйте його.
- Всередині має бути:
- “setup.py” з мінімальним кодом, щоб Python-оточення прийняло вміст папки за модуль для встановлення;
- “requirements.txt” з описом залежностей;
- “bot” – папка з вихідним кодом нашого робота.
- Виділіть всі ці файли та папки, а потім створіть з них новий ZIP-архів, тоді вихідний код усередині архіву не матиме зайвих папок (як у випадку з архівом, завантаженим з github).
- Перейдіть до панелі керування в розділ Хмарна платформа → Опції та натисніть кнопку Створити функцію .
- Виберіть середовище виконання та введіть ім’я, наприклад
Bot
. - У полі Завантажити виберіть Архів .
- Завантажте ZIP-файл як Код функції .
- Вкажіть Шлях до файлу як
/bot/tele_bot.py
. - Вкажіть функцію як
main
. - Отримайте токен за інструкцією і в полі Змінні оточення додайте його ключ та значення.
- Натисніть кнопку Зберегти та розгорнути .
- Щоб отримати посилання для виклику функції, перейдіть на вкладку Тригери і натисніть тумблер HTTP-запит.
Тепер ми маємо API, що реалізує логіку відповідей бота. Наступним етапом ми зареєструємо його у Telegram.
Зареєструвати нового бота в Telegram
Щоб Telegram знав існування нашого бота, його потрібно зареєструвати. Для цього існує лише один спосіб:
- Знайдіть робота @BotFather в Телеграм. Це офіційний бот, створений спеціально для керування ботами.
- Надішліть йому команду:
/newbot
- @BotFather спитає вас, як ви назвете вашого бота. Наступним повідомленням надішліть його назву, що закінчується на _bot.
- Запишіть отриманий токен від @BotFather – це ключ до роботи з Telegram API.
Тепер у нас API, реєстрація бота в Telegram та його токен. Залишилось зв’язати це разом.
Як пов’язати робота і його логіку воєдино?
На цьому етапі треба зробити так, щоб бот знав токен користувача, а Telegram знав де його API:
- Знайдіть змінну оточення «TOKEN» у налаштуваннях функції. Ми залишили її порожньою на першому етапі.
- Вкажіть у цій змінній токену вашого бота, який отримали від @BotFather.
- Натисніть Зберегти та розгорнути .
Далі потрібно направити повідомлення, які користувачі відправляють в Telegram, нашому боту – в API, яке для нього створили.
Спосіб 1. Через робота @SelectelServerless_bot
- Знайдіть робота @SelectelServerless_bot у Телеграмі.
- Введіть команду:
/setwebhook <Токен от вашего бота> <URL от облачной функции>
- Бот відповість тим, що одержить із Telegram API. Якщо все добре, це буде true.
- Щоб переконатися, що все коректно, надішліть команду:
/getwebhook <Токен от вашего бота>
- У відповідь має прийти інформація про webhook, у тому числі вказану вами URL.
Спосіб 2. Із заготовленої форми
Відкрийте форму (або скопіюйте її до себе у Хмарне сховище). Вставте токен від вашого бота в перше поле, URL хмарної функції у друге та натисніть кнопку «Set Webhook». Відбудеться звернення до api.telegram.org, і ви побачите результат.
Примітка: може знадобитися наявність VPN.
Підсумок
Готовий для роботи бот, доступний у Телеграмі, який відповідає на команди і здатний автоматично масштабуватися під навантаженням і без сервера.