7

Telegram-бот PLAY365: меняем розыгрыши призов в чатах

Привет, Пикабу!

Сегодня я хочу рассказать вам о проекте, над которым я и мой друг работали последние 6 месяцев. Называется он PLAY365 – и это игровой бот для групповых чатов Telegram.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Логотип PLAY365

Почему мы решили его создать? Все очень просто: розыгрыши всяких призов в больших чатах обычно проходят очень скучно. Все записываются в один большой список/группу/бота, а после окончания записи – админ запускает рандомайзер (рандстафф.ру, рандомус.ру, боты рандома, просто пальцем в небо сам и т.д.), который и выбирает номер победителя из списка. В качестве подтверждения результатов админ либо выкладывает скрин/видео итогов рандомайзера, либо дает ссылку на страничку с розыгрышем. И на наш взгляд, такой подход – мало того, что скучный, так еще и не всегда честный - рандомайзер можно бесконечно перекручивать под нужное число. К тому же, от участника не требуется вообще никакой активности: запишись в список и мониторь результаты.
Даже вышедший недавно официальный метод розыгрышей в Telegram использует такой же подход, разве что теперь можно для записи в список установить обязательные для подписки каналы, а честность рандома обеспечена самим Telegram:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Самый главный его минус - необходимость приобретать Telegram Premium для выставления в качестве приза! Хоть опцию добавить свой приз к подписке предусмотрели, и на том спасибо...

Поэтому пришла идея: сделать что-то интересное, честное, интерактивное, требующее участия участника, и обязательно – в самом Telegram, чтобы не переходить на сторонние платформы и сайты.

После обсуждения общей концепции, самой первой была придумана игра «Баскетбол». Если в Telegram отправить в чат эмодзи баскетбольного мяча (🏀), то будет отыграна анимация броска мяча в кольцо, у которой есть 5 вариаций: 3 из них покажут, что мяч промахнулся, 2 – что попал, т. е. шансы на попадание – 40%, причем случайность определяется самим Telegram и на нее никак нельзя повлиять. Мы решили использовать это и сделали скрипт, который проводит игру в три раунда: в первом раунде игрок должен забить хотя бы 1 раз из 3 бросков чтобы пройти дальше, во втором – 2 из 3, в третьем – 3 из 3. Если игрок не попадает нужное количество раз – он выбывает. Чей сейчас ход, сколько кто набрал очков и так далее - все считает бот самостоятельно.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Вот так "Баскетбол" выглядит в чате

Потом мы начали думать, как реализовать запись на игру, и вспомнили об inline-клавиатуре в Telegram API, которая позволяет создавать кнопки в сообщениях от бота. После серии экспериментов, сделали такой порядок:

  1. Админ запускает игру, например Баскетбол, командой /basket

  2. Бот объявляет старт записи на игру сообщением в чат, под сообщением есть три кнопки:

    1. «Присоединиться» - добавит игрока в список участников, при повторном нажатии – удалит его из списка;

    2. «Статус» - сообщит игроку, есть ли он в списке или нет;

    3. «Как играть» - выведет краткие правила текущей игры во всплывающем окне.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Запись на игру

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Всплывающее окно "Как играть"

После того, как нужное админу количество участников записалось на игру – он стартует ее командой /next, и дальше бот все делает сам – бросает мяч за игроков, считает очки, сообщает о вылетевших и победителе:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Объявление победителя по результатам бросков

"Баскетбол", пожалуй, единственная игра, где игрок может ничего не делать. Во всех остальных нужно участвовать активно – отправлять цифры или команды, выбирать вариант из предложенных ботом кнопок и так далее.

После реализации ключевых функций дело пошло как по маслу, и мы добавили еще 7 игр:

  1. Киллер (/killer) - каждый раунд бот выбирает случайного киллера из списка игроков и даёт ему список из 10 потенциальных жертв. Киллер пишет в чат номер жертвы для "убийства", если не успел - сам выбывает. Побеждает последний оставшийся в живых. Кстати, иногда киллер может промахнуться!

  2. Бинго (/bingo) - игроки загадывают числа из заданного интервала, а потом бот постепенно оглашает случайные числа из него. Задача – отследить совпадение всех своих чисел со случайными и успеть написать "Бинго". Кто ошибся – выбывает.

  3. Рулетка (/roulette) - бот выбирает случайного игрока, и тот должен успеть написать что угодно в чат. Кто промедлил - выбывает. Побеждает последний оставшийся или ответивший в свою очередь.

  4. Заряд (/charge) - игроки как можно быстрее "заряжают батарейку" своими сообщениями в чате. Кто первый наберёт нужное количество - победил.

  5. Больше-меньше (/updown) - Игроки отгадывают число из числового интервала. Каждый раунд бот пишет текущий интервал и даёт случайному игроку возможность написать число из него. После ответа игрока бот говорит - больше загаданное число написанного или меньше, и скорректирует интервал. Игра продолжается, пока кто-то не назовёт точное число.

  6. Пандора (/pandora) - игроки по очереди выбирают ключи, чтобы открывать ящики. В ящиках - разные бонусы или штрафы. Задача - найти Грааль, кто нашёл – сразу побеждает.

  7. Кинг-Конг (/kong) - В каждом раунде один игрок выбирается в качестве мишени Кинг-Конга. Цель может спрятаться или рискнуть подразнить Кинг-Конга, чтобы уменьшить или увеличить шанс поимки следующего игрока (и себя самого). Побеждает последний оставшийся непойманный игрок.

Также, для каждой игры добавили настройки – сколько длится ожидание ответа игрока, сколько раундов будет в игре, может ли промахиваться киллер и так далее:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Настройки игры "Бинго"

Потом у нас появились мини-игры, одна из них – классическая «Ферма»: нужно выращивать растения разной редкости, поливать и удобрять их, а после того, как они вырастут – собирать и продавать за Респекты (внутриигровую валюту). Более редкие растения приносят больше Респектов.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Ферма - теперь и в Telegram!

Респектами можно делиться, покупать на них новые растения, а также менять их на токены, которые, в свою очередь, можно потратить на покупку уникальности – например, сделать так, что в списке игроков твое имя будет отображаться не как @username, а как заданный тобой текст (например, ПоБеДиТеЛь777).

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Токены также можно приумножить (или потерять) в премиум-рулетке

Чтобы админы могли модерировать игры – добавили /ban (запретит игроку записываться на игры в течение определенного срока), /mute (запретит игроку писать сообщения в чат), /kick (удалит игрока из текущей игры). Каждую функцию можно отменить:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Если просто ввести /ban, без указания длительности - срок будет расти динамически

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

Это позволяет проводить игры только для старожилов или активных участников чата:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Такое окно появится, если попробовать присоединиться к игре с лимитом

И в итоге, когда все было сделано и мы начали тестировать бота – неожиданно для себя мы уперлись в ограничения Telegram API по количеству отправляемых ботом сообщений: бот «падал» даже при нескольких, запущенных одновременно, играх. Чтобы это обойти и дать возможность всем играть нормально, сначала мы хотели создать много ботов, чтобы в чате мог быть только какой-то один, но это показалось слишком сложным и плохо масштабируемым при большом спросе на бота. Поэтому был придуман другой подход – сперва админ создает своего бота через @BotFather, получает его API-Token (пример такого токена - 1234567890:abcdefghijABCDEfghiJKLMNopqrSTUVwxyz), и потом связывает своего бота с системой PLAY365, отправив API-Token нашему основному боту, @play365_bot:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Главное меню основного бота

После этого админу становится доступен весь функционал PLAY365 в созданном им боте, который он и добавит в свой чат. Такой подход позволяет нам (и админу) вообще не беспокоиться об ограничениях Telegram.

Чтобы окупать сервера и дальнейшее создание игр и фич – мы прикрутили к боту монетизацию посредством подписки:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Еще мы добавили себе возможность применять промокоды, которые планируем иногда публиковать. Для Пикабу, например, это PIKABU365, который бесплатно применит тариф NEWBIE на 1 месяц к вашему боту.

В целом, проект получился очень насыщенный, с действительно большим количеством функционала: например, я не описал тут возможность добавления игроков-ботов в игры, логи игр, статистику игроков, добавление модераторов, плейсхолдеры для текстовой рекламы в сообщении с записью на игру и в объявлении победителя, призыв участников чата на игру... Всё это мы постарались описать на сайте-инструкции проекта, ссылка в самом конце поста. Если же есть любые вопросы/предложения/идеи - не стесняйтесь писать их тут, в комментариях, или напрямую к нам в саппорт, ссылка также в самом конце.

Отдельно хочу ответить на один из самых частых вопросов (пусть и задаваемый в разных вариациях) - это НЕ СКАМ, НЕ РУЛЕТКА, тут НЕЛЬЗЯ ВЫВОДИТЬ ДЕНЬГИ, это НЕ АЗАРТНАЯ ИГРА, НЕ СТАВКИ!
Это просто игровой бот, который делает общение в чатах чуточку интереснее и веселее.

Ссылки:
Официальный сайт проекта: play365.super.site
Основной бот в Telegram: t.me/play365_bot
Техподдержка и вопросы: t.me/play365_support

Спасибо за внимание и хороших игр!