Привет, Хабр! Меня зовут Денис, и сегодня я расскажу вам о проекте, над которым я и мой друг работали последние 7 месяцев. Называется он PLAY365 — и это игровой (и не только) бот для групповых чатов Telegram.
В посте будет много информации: об истории создания бота, этапах, основных функциях, а также о том, с какими трудностями мы столкнулись и как их преодолели (конечно же, с примерами кода).
С чего все началось
Розыгрыши всевозможных призов в больших чатах обычно проходят очень скучно. Все записываются в один большой список/группу/бота, а после окончания записи — админ запускает рандомайзер (рандстафф.ру, рандомус.ру, боты рандома, просто пальцем в небо сам и т. д.), который и выбирает номер победителя из списка. В качестве подтверждения результатов админ либо выкладывает скрин/видео итогов рандомайзера, либо дает ссылку на страничку с розыгрышем. И на наш взгляд, такой подход — мало того, что скучный, так еще и не всегда честный: рандомайзер можно бесконечно перекручивать под нужное админу число. К тому же, от участника не требуется вообще никакой активности: запишись в список и мониторь результаты.
Даже вышедший недавно официальный метод розыгрышей в Telegram использует такой же подход, разве что теперь можно для записи в список установить обязательные для подписки каналы, а честность рандома обеспечена самим Telegram:

Поэтому, глядя на весь этот трэш, пришла идея: сделать что‑то интересное, честное, интерактивное, требующее участия пользователя, и обязательно — в самом Telegram, чтобы не переходить на сторонние платформы и сайты. С Telegram API до этого мы не работали, но лиха беда начало, тем более что на старте это показалось довольно простой затеей. Забегая вперед — как же мы ошибались...
Первая игра - Баскетбол
Если в Telegram отправить в чат эмодзи баскетбольного мяча (
