Письмо в редакцию: Как я за один день сделал игрового бота для 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, чтобы такая игра стала полностью функциональной.

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

0
13 комментариев
Популярные
По порядку
Написать комментарий...
Андрей Шелудченко

тут описание)))
http://bfy.tw/1C0l

Ответить
4
Развернуть ветку
Andrey Uglev

тем временем в сторах

Ответить
3
Развернуть ветку
Denis Grammakov

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

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Андрей Шелудченко

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

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку
Klim Safonov

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

Ответить
0
Развернуть ветку
Tom Andreevich Zarubin

Клим, покажи что сделал ты.

Ответить
1
Развернуть ветку
Klim Safonov

@bot_a_bot
@ewcbot
@appsfree

Ответить
2
Развернуть ветку
Sevan Avalyan

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

Ответить
2
Развернуть ветку
Tom Andreevich Zarubin

3 херни по 5 минут.

Ответить
1
Развернуть ветку
Klim Safonov

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

Ответить
0
Развернуть ветку
Денис Ольшин

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

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Иван Сергеевич

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

Ответить
0
Развернуть ветку
Kirill Krainov

ммм... И что?

Ответить
0
Развернуть ветку
Читать все 13 комментариев
«Инновации — это поле для сражений»

Как фуд-ритейл внедряет новые технологии.

Сбербанк совершил подлог-сфальсифицировал в ЛК отказ заемщика от ипотеки

3 ноября 2021 года была одобрена ипотека №36358988 на мою супругу, я выступаю как созаемщик.

Как пандемия изменила рынок онлайн-страхования

Выяснили и рассказываем, как изменился онлайн-спрос на услуги страхования с начала пандемии.

«Холакратия, любимые мемчики и прозрачность»: программист о работе в Точке, моделинге и запуске треков на Spotify

Точка — это про людей. Про сотрудников, которые создают удобный банк для бизнеса. Мы запускаем серию интервью с нашей командой, чтобы рассказать, как у нас всё устроено.

Как Яндекс Маркет забрал у меня товара на 600 тысяч и не хочет возвращать

Предыстория

Хоть кто-то был в курсе?

Pony Express задерживает доставку уже больше месяца, а поддержка издевается над клиентами

Решил я заказать в ноябре себе витаминов на iHerb. Оформил заказ, оплатил. iHerb написал примерные даты доставки. Думаю, ну окей, до отпуска успею получить. Выбрал из предложенных вариантов транспортных компаний Pony Express, тк примерные даты доставки были ближе остальных (ох.. КАК же я ошибался!)

В Москве появился фонд, инвестирующий в перспективные транспортные проекты

Фонд развития московского транспорта будет поддерживать стартапы, разрабатывающие прорывные технологии.

Статус бота Veles
Российскую операционную систему «Фантом» довели до тестирования после 12 лет разработки с нуля Статьи редакции

Система использует необычную архитектуру, не похожую на Windows и Linux.

Система «Фантом» в виртуальной машине QEMU
ИКЕА смогла предоставить самый худший клиентский сервис в моей жизни
null