Письмо в редакцию: Как я за один день сделал игрового бота для Telegram | Цифровой журнал | about digital

Старший iOS-разработчик системного интегратора «КРОК» Андрей Шелудченко прислал в редакцию письмо о том, как один из недавних материалов AD вдохновил его на создание собственного бота для Telegram, и вкратце описал процесс разработки.

Здравствуй, дорогая редакция AD. Спасибо большое за ваши статьи. Они всегда вдохновляют меня на новые свершения. Именно поэтому я очень хочу поделиться с вашими читателями своей историей, которая произошла благодаря недавней статье «
18 бизнес-ботов для Telegram». Она будет интересна и, надеюсь, полезна всем, кто очень хочет написать своего бота, но еще не решился.

В последнее время все чаще слышу о появлении новых крутых
Telegram-ботов. Сам уже пользуюсь парочкой и понимаю, насколько это удобно. Так вот, я хотел поделиться и своей историей.

Как и, наверное, многие другие iOS-разработчики, после прочтения статьи на AD «18
бизнес-ботов для Telegram» я размышлял, какого бы интересного бота мне написать. Хотелось чего-то веселого и очень простого.

Идея для бота пришла после работы, когда мы с друзьями (приговорив пару бутылочек красного) играли в Truth or Dare («Правда или действие», может, знаете). Мы весело придумывали друг другу задания, типа «выпей молоко носом» или «разбей яйцо головой», но в
какой-то момент фантазия начала заканчиваться, а игривое настроение — еще нет.

И тут я понял, какой Telegram-бот я хочу сделать. Основная идея была такой: пишешь в мессенджер /Truth или /Dare и получаешь на выходе интересную идею для вызова. Вернувшись домой, закатав рукава и открыв ноутбук, я взялся за дело.

Шаг 1: Источник

Первое, что нужно было решить — где взять готовую базу, чтобы создать бота прямо сейчас и не ждать, пока эта идея не придет другим. Ход конем. Написал письмо наудачу в техподдержку
Eristica с описанием своей идеи и просьбой поделиться базой споров из их фичи Shake’n’Dare (если потрясти телефон — получаешь случайный спор).

Несмотря на довольно позднее время, отдел разработки ответил мне в течение часа (редкость в наши дни). Команде очень понравилась идея, и они предложили не просто скинуть мне все споры, а сделать для меня
API, чтобы при обновлении их базы мне не приходилось перекачивать файл заново. Это было отличной новостью.

Шаг 2: Telegram API

Однако с
API Telegram-бота все сложилось не так радужно, как мне казалось. Чтобы создать своего бота, нужно в Telegram зайти на @BotFather. Вводим команду /newbot. Далее нам предлагается придумать имя своему боту, затем UserName. В нашем случае это Eristica и Eristicabot.

Далее создаём список команд для нашего бота, пока что будет одна — getdare — get random dare from Eristica.

Шаг 3: Серверная часть

Чтобы начать использовать Telegram Bot
API, нам понадобится token нашего бота.

Чтобы его получить, введите в @BotFather команду /token. Все запросы к
API Telegram имеют следующий вид: https://api.telegram.org/bot/METHOD_NAME

Вот пример запроса с сайта Телеграм: https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe

У Telegram есть два варианта, как реализовать связь между сервером и ботом: setWebHook и getUpdates.

setWebHook: этот метод цепляет вашего бота к функции на сервере, и каждый раз, когда происходит какое-то действие в боте, Telegram вызывает эту функцию и передаёт в неё объект типа Update.

Далее сервер этот запрос обрабатывает, к примеру, формирует сообщение для ответа, и посредством функции sendMessage может отправить это сообщение в конкретный чат (ID чата мы получаем, когда Telegram дергает наш сервер из объекта update).

Небольшой проблемой, с которой я столкнулся при использовании данного метода, была обязательная поддержка SSL-шифрования на вашем бэкенде.

Ссылка: https://api.telegram.org/bot/setWebhook?url=https://www.your-website.com/getUpdatesFromTelegramBot

getUpdates: в отличие от предыдущего метода этот метод инициируется самим сервером. У него один параметр — offset — ID последнего апдейта (соответственно в первый раз отправляем 0). То есть, к примеру, можно поставить таймер на сервере, чтобы раз в минуту получать все обновления от своего бота, и каждый из них обрабатывать.

Ссылка: https://api.telegram.org/bot/getUpdates?offset=0



Итог

Таким образом, буквально за один день, мне удалось сделать своего первого бота, который возвращает пользователю рандомный вызов, взятый из базы споров Eristica. Попробуйте сами:
telegram.me/eristicabot

В планах на ближайшее будущее: добавить базу «Правд» и создать команды /gettruth и /getdare, чтобы такая игра стала полностью функциональной.

Буду рад ответить на вопросы по созданию бота в комментариях.

About the author

Оцените статью