Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

evolvestin/CW-Battle-Digest-Encoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatWars Digest Bot

Status: Discontinued Python Library

Внимание: Разработка и поддержка проекта были официально остановлены 19 сентября 2022 года. Репозиторий переведен в режим архива и доступен только для чтения в исторических целях.

О проекте

ChatWars Digest Bot — это инструмент для автоматизированного сбора, хранения и глубокого анализа статистики битв в текстовой MMORPG ChatWars 3. Бот парсит данные из официальных каналов игры, сохраняет их в облачную базу данных (Google Sheets) и генерирует подробные аналитические сводки по запросу пользователей.

Ключевой функционал

  • Автоматический парсинг: Мониторинг канала ChatWarsDigest и мгновенное занесение результатов битв в базу данных.
  • Генерация сводок (/summary): Создание отчетов за неделю, месяц, год или произвольный период с учетом динамики золота, опыта и ресурсов.
  • Анализ сезонов (/season): Подсчет ротации замков и очков в текущем или прошлых игровых сезонах.
  • Расчет среднего места (/average): Вычисление средней позиции замка в рейтинге на основе накопленной статистики.
  • World Top (/worldtop): Формирование топа замков с учетом скрытых механик и дополнительных начислений очков (квесты, ивенты), а также поддержка ручного ввода данных игроками.

История изменений (Change Log)

2022

  • 19.09.2022Окончание поддержки. Проект официально заморожен.

2020

  • 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 — Зафиксирована и исправлена ошибка при переходе между игровыми сезонами.

Летопись проекта

Эпоха становления (2018)

Идея проекта зародилась 29 декабря 2018 года. Целью было подведение итогов первого года игры (май–декабрь) в формате расширенных сводок, аналогичных игровым, но агрегированных за длительный период. Несмотря на сжатые сроки и "костыльный" код первой версии, 31 декабря 2018 года бот успешно сгенерировал годовой отчет. Публикация на канале CWWeekDigest вызвала резонанс в сообществе и была репостнута крупными игровыми ресурсами.

Период затишья (2019)

В первой половине 2019 года бот работал стабильно, но позже сломался из-за изменений в формате данных игры. Проект был временно заморожен. Попытка воскрешения произошла в сентябре 2019 года, но полноценный рефакторинг состоялся лишь в конце года. 31 декабря 2019 года была опубликована сводка за 2019 год. После этого функционал бота был урезан до простого логгера битв в базу данных.

Ренессанс (2020)

В январе 2020 года по запросу комьюнити был реализован функционал подсчета ротации замков за любой промежуток времени. В ноябре 2020 года код был полностью переписан с использованием собственной библиотеки e-objects.

  • Спарсены архивы старых битв.
  • Настроен надежный мониторинг новых сражений.
  • Реализована динамическая команда /season с автоматическим обновлением описания в Telegram.
  • Добавлен точный клон игрового /worldtop.

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


Техническая информация

Стек технологий

  • Язык: Python 3
  • Фреймворк: Aiogram (v2)
  • Парсинг: BeautifulSoup4, Requests
  • База данных: Google Sheets (через gspread)

Хранение данных

Данные хранятся в Google Таблице Digest (доступ ограничен).

  • Лист Main: Содержит архив битв (более 2700 записей на момент активной фазы).
  • Структура: ID поста, текст битвы, распарсенные метрики.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors