Pull to refresh

История одного бота

Reading time4 min
Views19K

Всем привет! Последние 4 месяца я занят разработкой некоммерческого бота для Telegram. Сейчас в него ежедневно играет от одной до четырех сотен людей и для меня это большой успех. Если вам интересна история разработки, то прошу под кат.



Начало


Немного об обстоятельствах, которые толкнули меня на это. Играясь в @godnotbot (кстати, рекомендую) захотелось создать свою текстовую бродилку с подземельями и драконами.


Определившись, что это будет текстовая РПГ в Telegram, я задумался над тем, что будет внутри этой РПГ. А внутри было схожее с годноботом решение — случайные комнаты или ситуации. Нажми на кнопку, получишь новую комнату. Ко всему прочему, были боги, которые давали различные бонусы за молитвы и злились, когда от них уходили в другую веру. А также, магазин, где продаётся всякого рода барахло облегчающее ваш путь к неизбежной смерти.


С концептом разобрались, теперь нужно было делать. Для разработки я выбрал Python. Почему? А почему бы нет — ботов на нем написано уже много, да и язык приятный.


Завязка


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


У друга взял покататься VPS, настроил настройки, и запустил бота в бесконечный цикл. После чего на скорую руку сваял группу в ВК и написал пост на Пикабу. Сам того не зная, как мне объяснили позже, я выбрал время для поста настолько хорошо, что поймал всю свою аудиторию и в первый день познакомиться с ботом пришли 3,000 человек. Это было круто. Но тут же возникли проблемы.


Ситуация первая


Telegram не разрешит вам отправлять очень много сообщений. Но “много” у всех разное. Есть ограничения на сообщения в минуту в приватный чат, группу, на общее количество сообщений в день, в секунду во все чаты. Как это работает точно и точные числа неизвестны. Да, на сайте есть про это три абзаца, но на деле все сводится к тому, что есть пределы, вы можете их нарушать, но никто не знает, что тогда произойдет. Поэтому я поставил ограничение на отправку 30 сообщений в секунду и все ошибки ушли. Но в час-пик пользователям иногда приходилось ждать своих сообщений дольше десяти секунд.


Написал в саппорт, что не можем это терпеть. Спустя несколько дней там сказали, что нужно написать в саппорт по ботам. Саппорт по ботам, спустя еще несколько дней вынес вердикт: живи с этим, ничего не поделать. Порекомендовали ещё использовать inline кнопки, но этот вариант меня не устраивал — тогда будет теряться история сообщений. В итоге пришлось остаться на тридцати сообщениях в секунду и на этом остановиться.


Ситуация вторая


Проект был полностью открытым (и остается таким до сих пор! Вот исходный код) и это сыграло важную роль в развитии проекта — люди начали помогать: присылать свои идеи, править код, рисовать для бота. А главное, появилось несколько волонтеров, которые на постоянной основе помогают с ботом до сих пор. Это Андрей, Владислав и Алексей (так же хотелось бы отметить Эрика, он так же всегда помогал мне с ботом, хоть и немного не там, где это делали все остальные (: ). А еще чуть позже для всей игры был нарисован свой стикерпак (Спасибо Алексею за этот труд).


Этим абзацем я хочу заметить, что если вы не жадина и не боитесь кражи кода, то можно просить помощи у вашего же комьюнити и, скорее всего, вам помогут. А если вы думаете, что ваш код кому-то нужен — не волнуйтесь, вы наберете большую аудиторию, чем люди, укравшие у вас код (хотя может не повезет и все пойдет наперекосяк, но это значит, что либо вы где-то повернули не туда, либо вор инвестирует в клона большие деньги. Но идею у вас все равно всегда смогут украсть).


Сюжет


Идей уйма, пользователи есть, процесс идет, что дальше? Дальше мы задумываемся о переводе своего продукта на самообеспечение. Не долго думая, я организовал добровольные пожертвования на Яндекс.Деньгах и, собственно, на этих деньгах бот живет до сих пор, и это греет душу.


В ноябре на связь вышла поддержка, напомнив об ограничениях по количеству сообщений и предложила частично их снять, в качестве исключения популярному боту. Теперь мы можем моментально отвечать в обход ограничений (если команда Telegram пожелает, она всегда может вернуть их нам). Мы сняли режим очереди в коде, но позже обнаружили, что ограничения никуда не делись. Поддержка ответила, что моментально можно отвечать только короткими сообщениями, то есть менее 500 символов. Грустно, но правила диктуем не мы.


А прямо сейчас мы вместе с комьюнити переводим бота на английский язык. Там свыше 1,800 фраз, некоторые из которых длинные, а некоторые нельзя просто так перевести. Например: "ЗА ВДВ!". Сейчас игра полностью переведена и находится у редактора на корректировании.


Развязка


Что я хотел? Тектовое РПГ в телеграме. Что я получил? Бота, в которого каждую неделю играет тысяча человек, в которого убивают время в пробках, и 4 месяца разработки с веселыми людьми, а также интересные знакомства. А пока готовимся к переводу, выпуску бота в веб и внедрению масштабной мультиплеерной системы (:


Что из этого выйдет? Кто знает…


Если вам будет интересна эта тема, то в следующем посте будут описания проблем в самой разработке и о механизмах работы игры (можно задать вопросы для следущего поста, если есть такие). Самого бота можно найти вот здесь.

Tags:
Hubs:
Total votes 45: ↑40 and ↓5+35
Comments58

Articles