Ссылка: https://t.me/dateduelbot
Это Telegram-бот для игры в угадывание исторических дат. Пользователь запускает игру, набрав /play
, и бот выдает событие. Пользователь должен угадать дату события. Бот будет давать подсказки после каждого неверного предположения и обновлять счет пользователя после каждой игры. Пользователь может просмотреть свой прогресс, набрав /stat
.
Когда пользователь правильно угадает дату события, бот предоставит дополнительную информацию о событии и связанное с ним изображение. Это не только позволяет пользователям больше узнать об исторических событиях, но и делает игру более увлекательной и визуально привлекательной.
Команды:
/start
- запустить бота./help
- правила игры и команды./play
- начать играть./sur
- сдаться и получить информацию о событии./cancel
- выход из режима игры./stat
- просмотреть статистику.
Бот использует базу данных MongoDB для пользовательской информации и результатов игр. Это позволяет боту отслеживать прогресс пользователя с течением времени и обеспечивает долговременное хранение его прогресса.
Python 3.8
aiogram 3.0.* - для использования Telegram Bot API
PyMongo - драйвер для MongoDB
- Клонирование репозитория:
git clone https://github.com/welel/date-duel-bot.git
-
Заполнить файл
.env.dist
и переименовать его.env
. -
Сборка образа и запуск контейнеров при помощи Docker Compose. Бот автоматически запустится и будет готов к работе.
docker compose up --bulid -d
Данные с историческими событиями хранятся в json файле res/events.json
.
[{
"_id": 0, // Уникальное
"_type": "date",
"event": "Начало княжения Рюрика",
"date": 862,
"description": "Рюрик начал свое княжение...", // Опциональное
"image_path": "res/images/date-0.jpg" // Опциональное
}]
Структура MongoDB:
// Collection - Players
{
"_id": {
"$numberLong": "6855231396" // Уникальное (tg user id)
},
"current_event": null, // id угадываемого события
"guessed_events": [0, 1], // Отгаданные события
"attempts": 7, // Общее кол-во попыток
"score": 37 // Очки
}