Як створити телеграм-бота на хмарних функціях

Соціальні Медіа

З допомогою роботів можна спростити собі завдання комунікації з користувачами, створивши їм розумного помічника. Боти розуміють текстові команди і можуть звертатися до API вашого веб-сайту, сервісу або бути самостійним продуктом з унікальними послугами. Зазвичай для створення бота потрібен сервер, але в цій статті ми розберемо підхід, що дозволяє обійтися без нього. Він ідеальний при різких коливаннях кількості запитів та чудово витримує пікові навантаження.
Налаштувати Телеграм-бота на Хмарних функціях, використовуючи офіційний API та заготовлений нами приклад, можна у 3 етапи:

  1. Запрограмувати логіку роботи телеграм-бота.
  2. Зареєструвати нового бота в Telegram.
  3. Зв’язати робота і його логіку воєдино.

Запрограмувати логіку роботи Телеграм-бота 

Щоб спростити завдання, ми написали приклад такого робота. Його вихідний код доступний за посиланням github.com/selectel/cloud-telegram-bot . Він розуміє команди:

  • /start із вітальним повідомленням;
  • /sticker з відповіддю у вигляді стікера;
  • /getwebhook щоб ви могли отримати інформацію про налаштування вашого робота;
  • /setwebhook для налаштування вашого робота, але про це пізніше.

Пройдіть наступні кроки з нашим прикладом робота, щоб освоїтися:

  1. Завантажте вихідний код як архів (Clone or download → Download ZIP) і розпакуйте його.
  2. Всередині має бути:
    • “setup.py” з мінімальним кодом, щоб Python-оточення прийняло вміст папки за модуль для встановлення;
    • “requirements.txt” з описом залежностей;
    • “bot” – папка з вихідним кодом нашого робота.
  3. Виділіть всі ці файли та папки, а потім створіть з них новий ZIP-архів, тоді вихідний код усередині архіву не матиме зайвих папок (як у випадку з архівом, завантаженим з github).
  4. Перейдіть до панелі керування в розділ Хмарна платформа → Опції та натисніть кнопку Створити функцію .
  5. Виберіть середовище виконання та введіть ім’я, наприклад Bot.
  6. У полі Завантажити виберіть Архів .
  7. Завантажте ZIP-файл як Код функції .
  8. Вкажіть Шлях до файлу як /bot/tele_bot.py.
  9. Вкажіть функцію як main.
  10. Отримайте токен за інструкцією і в полі Змінні оточення додайте його ключ та значення.
  11. Натисніть кнопку Зберегти та розгорнути .
  12. Щоб отримати посилання для виклику функції, перейдіть на вкладку Тригери і натисніть тумблер HTTP-запит.

Тепер ми маємо API, що реалізує логіку відповідей бота. Наступним етапом ми зареєструємо його у Telegram.

Зареєструвати нового бота в Telegram 

Щоб Telegram знав існування нашого бота, його потрібно зареєструвати. Для цього існує лише один спосіб:

  1. Знайдіть робота @BotFather в Телеграм. Це офіційний бот, створений спеціально для керування ботами.
  2. Надішліть йому команду:/newbot
  3. @BotFather спитає вас, як ви назвете вашого бота. Наступним повідомленням надішліть його назву, що закінчується на _bot.
  4. Запишіть отриманий токен від @BotFather – це ключ до роботи з Telegram API.

Тепер у нас API, реєстрація бота в Telegram та його токен. Залишилось зв’язати це разом.

Як пов’язати робота і його логіку воєдино? 

На цьому етапі треба зробити так, щоб бот знав токен користувача, а Telegram знав де його API:

  1. Знайдіть змінну оточення «TOKEN» у налаштуваннях функції. Ми залишили її порожньою на першому етапі.
  2. Вкажіть у цій змінній токену вашого бота, який отримали від @BotFather.
  3. Натисніть Зберегти та розгорнути .

Далі потрібно направити повідомлення, які користувачі відправляють в Telegram, нашому боту – в API, яке для нього створили.

Спосіб 1. Через робота @SelectelServerless_bot 

  1. Знайдіть робота @SelectelServerless_bot у Телеграмі.
  2. Введіть команду:/setwebhook <Токен от вашего бота> <URL от облачной функции>
  3. Бот відповість тим, що одержить із Telegram API. Якщо все добре, це буде true.
  4. Щоб переконатися, що все коректно, надішліть команду:/getwebhook <Токен от вашего бота>
  5. У відповідь має прийти інформація про webhook, у тому числі вказану вами URL.

Спосіб 2. Із заготовленої форми 

Відкрийте форму (або скопіюйте її до себе у Хмарне сховище). Вставте токен від вашого бота в перше поле, URL хмарної функції у друге та натисніть кнопку «Set Webhook». Відбудеться звернення до api.telegram.org, і ви побачите результат.

Примітка: може знадобитися наявність VPN.

Підсумок 

Готовий для роботи бот, доступний у Телеграмі, який відповідає на команди і здатний автоматично масштабуватися під навантаженням і без сервера.

Оцініть статтю
Додати коментар