Внимание: Разработка и поддержка проекта были официально остановлены 19 сентября 2022 года. Репозиторий переведен в режим архива и доступен только для чтения в исторических целях.
ChatWars Digest Bot — это инструмент для автоматизированного сбора, хранения и глубокого анализа статистики битв в текстовой MMORPG ChatWars 3. Бот парсит данные из официальных каналов игры, сохраняет их в облачную базу данных (Google Sheets) и генерирует подробные аналитические сводки по запросу пользователей.
- Автоматический парсинг: Мониторинг канала
ChatWarsDigestи мгновенное занесение результатов битв в базу данных. - Генерация сводок (
/summary): Создание отчетов за неделю, месяц, год или произвольный период с учетом динамики золота, опыта и ресурсов. - Анализ сезонов (
/season): Подсчет ротации замков и очков в текущем или прошлых игровых сезонах. - Расчет среднего места (
/average): Вычисление средней позиции замка в рейтинге на основе накопленной статистики. - World Top (
/worldtop): Формирование топа замков с учетом скрытых механик и дополнительных начислений очков (квесты, ивенты), а также поддержка ручного ввода данных игроками.
- 19.09.2022 — Окончание поддержки. Проект официально заморожен.
- 21.12.2020 — Глобальное обновление команды
/summary. Внедрен алгоритмworld_top_sorted()для учета всех параметров битвы. Завершена подготовка функционала для генерации автоматических еженедельных и ежемесячных дайджестов. - 19.12.2020 — Переход на расчет времени по GMT+0 для внутренней логики (ранее GMT+3). В команду
/worldtopдобавлено отображение "добавочных кубков" (за квесты вне битв). Команды/averageи/seasonтеперь учитывают эти данные. - 14.12.2020 — Оптимизация таймзон. Данные
/worldtopиз Telegram приходят в GMT+0, но вывод пользователю адаптирован под GMT+3. - 11.12.2020 — Адаптация под новые механики сезона (от 01.12.2020). Добавлена возможность ручного форварда сообщений
/worldtopиз игры в бота для восполнения пробелов статистики, так как игровые механики изменили способы получения очков. - 10.12.2020 — Внедрена превентивная сортировка битв по временным меткам перед анализом для исключения ошибок хронологии.
- 22.11.2020 — Добавлена сортировка по значениям для команды
/average. - 21.11.2020 — Рефакторинг взаимодействия с пользователем.
- Все команды теперь поддерживают два режима: автоматический (текущий сезон) и ручной (указание диапазона дат).
- Реализована санация входных данных для защиты от инъекций.
- Выделена функция
text_header()для стандартизации заголовков отчетов.
- 20.11.2020 — Исправление критической ошибки в
world_top_sorted(), связанной с неверной последовательностью обработки битв. - 18.11.2020 — Релиз команды
/worldtop. Переписан алгоритм расчета "истинного топа" (true_world_top). - 01.03.2020 — Зафиксирована и исправлена ошибка при переходе между игровыми сезонами.
Идея проекта зародилась 29 декабря 2018 года. Целью было подведение итогов первого года игры (май–декабрь) в формате расширенных сводок, аналогичных игровым, но агрегированных за длительный период. Несмотря на сжатые сроки и "костыльный" код первой версии, 31 декабря 2018 года бот успешно сгенерировал годовой отчет. Публикация на канале CWWeekDigest вызвала резонанс в сообществе и была репостнута крупными игровыми ресурсами.
В первой половине 2019 года бот работал стабильно, но позже сломался из-за изменений в формате данных игры. Проект был временно заморожен. Попытка воскрешения произошла в сентябре 2019 года, но полноценный рефакторинг состоялся лишь в конце года. 31 декабря 2019 года была опубликована сводка за 2019 год. После этого функционал бота был урезан до простого логгера битв в базу данных.
В январе 2020 года по запросу комьюнити был реализован функционал подсчета ротации замков за любой промежуток времени.
В ноябре 2020 года код был полностью переписан с использованием собственной библиотеки e-objects.
- Спарсены архивы старых битв.
- Настроен надежный мониторинг новых сражений.
- Реализована динамическая команда
/seasonс автоматическим обновлением описания в Telegram. - Добавлен точный клон игрового
/worldtop.
К концу 2020 года бот представлял собой мощный аналитический инструмент, готовый к генерации любых отчетов.
- Язык: Python 3
- Фреймворк: Aiogram (v2)
- Парсинг: BeautifulSoup4, Requests
- База данных: Google Sheets (через
gspread)
Данные хранятся в Google Таблице Digest (доступ ограничен).
- Лист Main: Содержит архив битв (более 2700 записей на момент активной фазы).
- Структура: ID поста, текст битвы, распарсенные метрики.