Всім привіт! Останні 4 місяці я зайнятий розробкою некомерційного бота для Telegram. Зараз у нього щодня грає від однієї до чотирьох сотень людей і для мене це великий успіх. Якщо вам цікава історія розробки, то прошу під кат.
Початок
Трохи про обставини, які штовхнули мене на це. Граючись у @ godnotbot (до речі, рекомендую) захотілося створити свою текстову бродилку з підземеллями і драконами.
Визначившись, що це буде текстова РПГ в Telegram, я задумався над тим, що буде всередині цієї РПГ. А всередині було схоже з годноботом рішення - випадкові кімнати або ситуації. Натисни кнопку, отримаєш нову кімнату. До всього іншого, були боги, які давали різні бонуси за молитви і злилися, коли від них йшли в іншу віру. А також, магазин, де продається всякого роду барахло полегшує ваш шлях до неминучої смерті.
З концептом розібралися, тепер потрібно було робити. Для розробки я вибрав Python. Чому? А чому б ні - ботів на ньому написано вже багато, та й мова приємна.
Зав'язка
У підсумку на світ з'явився простенький бот з трохи більше, ніж десятком кімнат. Самого бота тепер можна завжди знайти тут. Дітище було показано всім друзям і на цьому його історія мало не закінчилася. Гра була врятована від забуття раптовою думкою: а було б непогано показати кому-небудь ще.
У друга взяв покататися VPS, налаштував налаштування, і запустив бота в нескінченний цикл. Після чого нашвидкуруч зваяв групу у ВК і написав пост на Пікабу. Сам того не знаючи, як мені пояснили пізніше, я вибрав час для посту настільки добре, що зловив всю свою аудиторію і в перший день познайомитися з ботом прийшли 3,000 чоловік. Це було круто. Але тут же виникли проблеми.
Ситуація перша
Telegram не дозволить вам надсилати дуже багато повідомлень. Але «багато» у всіх різне. Є обмеження на повідомлення в хвилину в приватний чат, групу, на загальну кількість повідомлень в день, в секунду у всі чати. Як це працює точно і точні числа невідомі. Так, на сайті є про це три абзаци, але на ділі все зводиться до того, що є межі, ви можете їх порушувати, але ніхто не знає, що тоді станеться. Тому я поставив обмеження на відправку 30 повідомлень в секунду і всі помилки пішли. Але в годину-пік користувачам іноді доводилося чекати своїх повідомлень довше десяти секунд.
Написав у саппорт, що не можемо це терпіти. Через кілька днів там сказали, що потрібно написати в саппорт по ботах. Саппорт по ботах, через ще кілька днів виніс вердикт: живи з цим, нічого не вдіяти. Порекомендували ще використовувати inline кнопки, але цей варіант мене не влаштовував - тоді буде втрачатися історія повідомлень. У підсумку довелося залишитися на тридцяти повідомленнях в секунду і на цьому зупинитися.
Ситуація друга
Проект був повністю відкритим (і залишається таким досі! Ось вихідний код) і це зіграло важливу роль у розвитку проекту - люди почали допомагати: надсилати свої ідеї, правити код, малювати для бота. А головне, з'явилося кілька волонтерів, які на постійній основі допомагають з ботом досі. Це Андрій, Владислав і Олексій (так само хотілося б відзначити Еріка, він так само завжди допомагав мені з ботом, хоч і трохи не там, де це робили всі інші (: ). А ще трохи пізніше для всієї гри був намальований свій стікерпак (Спасибі Олексію за цю працю).
Цим абзацом я хочу зауважити, що якщо ви не жадібна і не боїтеся крадіжки коду, то можна просити допомоги у вашого ж ком'юніті і, швидше за все, вам допоможуть. А якщо ви думаєте, що ваш код комусь потрібен - не хвилюйтеся, ви наберете більшу аудиторію, ніж люди, які вкрали у вас код (хоча може не пощастить і все піде шкереберть, але це означає, що або ви десь повернули не туди, або злодій інвестує в клони великі гроші. Але ідею у вас все одно завжди зможуть вкрасти).
Сюжет
Ідей божевілля, користувачі є, процес йде, що далі? Далі ми замислюємося про переведення свого продукту на самозабезпечення. Не довго думаючи, я організував добровільні пожертви на Яндекс.Грошах і, власне, на цих грошах бот живе досі, і це гріє душу.
У листопаді на зв'язок вийшла підтримка, нагадавши про обмеження за кількістю повідомлень і запропонувала частково їх зняти, як виняток популярному боту. Тепер ми можемо моментально відповідати в обхід обмежень (якщо команда Telegram побажає, вона завжди може повернути їх нам). Ми зняли режим черги в коді, але пізніше виявили, що обмеження нікуди не поділися. Підтримка відповіла, що моментально можна відповідати тільки короткими повідомленнями, тобто менше 500 символів. Сумно, але правила диктуємо не ми.
А прямо зараз ми разом з ком'юніті перекладаємо бота англійською мовою. Там понад 1,800 фраз, деякі з яких довгі, а деякі не можна просто так перевести. Наприклад: «» ЗА ВДВ! «». Зараз гра повністю переведена і знаходиться у редактора на коригуванні.
Розв'язка
Що я хотів? Тектове РПГ у телеграмі. Що я отримав? Бота, в якого щотижня грає тисяча осіб, в якого вбивають час у заторах, і 4 місяці розробки з веселими людьми, а також цікаві знайомства. А поки готуємося до переведення, випуску бота в веб і впровадження масштабної мультиплеєрної системи (:
Що з цього вийде? Хто знає...
Якщо вам буде цікава ця тема, то в наступному пості будуть описи проблем в самій розробці і про механізми роботи гри (можна поставити питання для слідчого посту, якщо є такі). Самого бота можна знайти ось тут.
