Разработка telegram-бота для игры в Крокодила

Доброго времени суток, уважаемые ДТФчане и ДТФчанки. Хочу поделиться с вами историей создания бота для игры в Крокодила. Для тех кто не в теме — "Крокодил" — игра, в которой ведущий должен объяснить слово жестами. В интернете мы не видим друг-друга, поэтому будем использовать синонимы.

Немного предыстории: не так давно, где-то месяца три назад в локальном чате telegram добавили бота для игры в крокодила. Всё бы ничего, актив поднялся, участники узнали друг друга с иной стороны, если бы не одно "но". Бот любил спамить. Делал это днем. Делал это ночью. Оговорюсь, что если бот добавляет аккуратную ссылку со скромным текстом во время игры или запроса, как у voicy или бота-конвертера валют, то это нормально. Однако, тот бот присылал сам длинную простыню на 2-3 экрана с рекламным текстом и изображениями по два раза в день в то время, когда бот не использовался. И меня посетила мысль — а ведь я могу написать своего бота для игры.

По профессии я специалист по тестированию программного обеспечения, было желание прокачать свои скиллы, поставить себя на место разработчиков, понять как происходит взаимодействие с удаленным сервером по ssh, обновление файлов через git, а также что чувствуют разработчики, когда тестировщики в грубой и извращенной форме указывают на допущенные ошибки.

Разработка велась в вечерние часы, когда был свободен от работы плюс выходные, это, конечно, сильно тормозило процесс, но я справился с поставленной задачей.

Сам бот написан на python + aiogram, хостинг Oracle Cloud (у них есть бесплатный тарифный план с двумя линуксовыми инстансами). Если написать в личку боту, то он просит добавить его в группу и отправить команду start. После этого можно приступать к игре. Команда play запускает игру, написавшего назначает ведущим, показывает ему слово, которое нужно объяснить синонимами не называя само слово, а другие участники чата его угадывают. При поступлении правильного ответа отгадавший становится ведущим и игра продолжается.

Получилась улучшенная версия популярного бота, с расширенным функционалом (я не претендую на точность, в настройках не ковырялся, пользовался стандартным набором, возможно у них есть аналогичный набор):

- Отгадавший слово становится ведущим автоматически. Добавлено по просьбам игроков, т.к. некоторые «редиски» сразу нажимали кнопку «Стать ведущим» и не давали другим загадать слово;

- Функционал автоматической передачи слова оценили не все, некоторые хотят только угадывать, но при этом не хотят быть ведущим. Для них я добавил кнопку «Остановить игру». Таким образом, если отгадавший по какой-то причине не может вести игру или хочет уйти, например, спать, он просто останавливает игру и дает возможность взять слово другому игроку;

- Словари. В данный момент у бота их 4 — общий, знаменитости, фильмы и еда. Администратор группы может включать и отключать их. Слово будет выбираться из активных словарей. В будущем планирую добавить новые;

- Возможность загадывать словосочетания и фразы. Загадывать можно не только одно слово, а несколько, особенно это актуально если загадан актер, певец или название фильма;

- Списки лидеров и статистика по чату (не киллер-фича, есть и у другого бота, но пусть будет)

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

Чему я научился: работа с CentOS по ssh, работа с ssh-ключами, установка пакетов, зависимостей без доступа к графической оболочке, запуск скриптов на python, самостоятельный поиск ошибок в коде по ошибкам в логах и их устранение, работа с запросами к бд.

Мой совет всем — не бойтесь и делайте. Разрабатывайте и учитесь.

Немного статистики:

Сыграно игр: 2112

Активных игроков: 65

Активных чатов: 5

Аватарку для бота я попросил нарисовать всем известную нейросеть.

Проверить работу бота вы можете по ссылке http://t.me/samcrocodile_bot

1010
1 комментарий

Игра в крокодила. Кто будет держать ложку над зажигалкой?

2
Ответить