Лого vc.ru

Письмо в редакцию: Как я за один день сделал игрового бота для Telegram

Письмо в редакцию: Как я за один день сделал игрового бота для Telegram

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

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

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

Как и, наверное, многие другие iOS-разработчики, после прочтения статьи на ЦП «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<token>/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<token вашего бота>/setWebhook?url=https://www.your-website.com/getUpdatesFromTelegramBot

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

Cсылка: @https://api.telegram.org/bot<token вашего бота>/getUpdates?offset=0

Итог

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

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

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

Теги
Статьи по теме
18 бизнес-ботов для Telegram: финансы, путешествия, языки
0

Призываю К.О.
Я не очень хорошо разбираюсь в аналитике мобильных приложений, но объясните мне каким образом приложения вроде VK держатся на первом месте по скачиваниям постоянно? Казалось ведь что его уже ну все поставили, разве нет? Каждый день новые скачивания?

0

в аналитике это ещё считается сколько раз приложение открывалось на устройстве, длительность сеанса, как много удалений приложения.

0

Рабочий токен бота всё-таки не стоило на скриншоте оставлять.

0

Просто охеренная статья.
Херню написал какую-то.
Бота простого написал, пишется за 5 минут.
В чем смысл статьи?

@bot_a_bot — можно смело в резюме выкладывать.

0

Согласно статье = 3 суток

0

Интересно есть перспективы монетизации ботов таких? Не прикрученных ни к каким сервисам.

0

ммм... И что?

Прямой эфир
Нейронная сеть научилась читать стихи
голосом Пастернака и смотреть в окно на осень
Подписаться на push-уведомления