телеграм бот что отправляет статистику и активность по игрокам lichess.org
Find a file
vrubelroman bfee84d963 Улучшен текст инструкции при добавлении пользователя в боте
Теперь пользователь получает более подробную информацию:
- Зачем нужен токен (для получения данных по задачам)
- Где создать токен (настройки профиля)
- Какие права дать (только puzzle:read)
- Что делать если токен не нужен
2025-10-26 20:43:42 +03:00
LichessClientTG_bot Улучшен текст инструкции при добавлении пользователя в боте 2025-10-26 20:43:42 +03:00
LichessWebServices Создание единого проекта Lichess Statistics Ecosystem 2025-10-26 20:23:26 +03:00
LichessWebView Создание единого проекта Lichess Statistics Ecosystem 2025-10-26 20:23:26 +03:00
.gitignore Создание единого проекта Lichess Statistics Ecosystem 2025-10-26 20:23:26 +03:00
docker-compose.yml Создание единого проекта Lichess Statistics Ecosystem 2025-10-26 20:23:26 +03:00
README.md Создание единого проекта Lichess Statistics Ecosystem 2025-10-26 20:23:26 +03:00
start.sh Создание единого проекта Lichess Statistics Ecosystem 2025-10-26 20:23:26 +03:00

Lichess Statistics Ecosystem

Полнофункциональная система для отслеживания статистики игроков Lichess.org с Telegram ботом и веб-интерфейсом.

🎯 Описание проекта

Система состоит из трех взаимосвязанных компонентов:

  1. LichessWebServices - REST API для получения статистики игроков Lichess
  2. LichessClientTG_bot - Telegram бот для управления подписками и уведомлений
  3. LichessWebView - Веб-интерфейс для просмотра пользователей и их игроков

🏗️ Архитектура

┌─────────────────────────────────────────────────────────────┐
│                     Telegram Users                           │
│                                                              │
│  ┌────────────────────────────────────────────────────┐   │
│  │           LichessClientTG_bot                       │   │
│  │  (Управление подписками, уведомления)               │   │
│  └────────┬───────────────────────────────────────────┘   │
│           │                                                 │
│           ├──────────────────────┐                          │
│           │                      │                          │
│  ┌────────▼──────────┐   ┌──────▼──────────────┐          │
│  │ LichessWebServices │   │  LichessWebView    │          │
│  │                    │   │                    │          │
│  │  REST API для      │   │  Веб-интерфейс     │          │
│  │  получения         │   │  для просмотра     │          │
│  │  статистики        │   │  пользователей     │          │
│  └────────┬───────────┘   └────────────────────┘          │
│           │                                              │
└───────────┼──────────────────────────────────────────────┘
            │
            ▼
    ┌───────────────┐
    │  Lichess API  │
    └───────────────┘

🚀 Быстрый старт

Установка и запуск

# Клонируем репозиторий
git clone https://github.com/vrubelroman/LichessStatTgWeb.git
cd LichessStatTgWeb

# Запускаем все сервисы
./start.sh

Скрипт start.sh запустит все контейнеры в правильном порядке.

Доступные сервисы

После запуска доступны:

📦 Структура проекта

LichessStatTgWeb/
├── LichessWebServices/      # REST API сервис
│   ├── main.py              # FastAPI приложение
│   ├── stats_service.py     # Логика обработки статистики
│   ├── lichess_client.py   # Клиент для Lichess API
│   └── models.py           # Pydantic модели
│
├── LichessClientTG_bot/     # Telegram бот
│   ├── bot.py              # Основная логика бота
│   ├── database.py         # Работа с БД
│   ├── lichess_api.py     # API клиент
│   ├── formatters.py      # Форматирование ответов
│   └── config.py          # Конфигурация
│
├── LichessWebView/          # Веб-интерфейс
│   ├── app.py             # Flask приложение
│   └── templates/         # HTML шаблоны
│       └── index.html     # Главная страница
│
├── docker-compose.yml       # Общая конфигурация контейнеров
├── start.sh                 # Скрипт запуска всех сервисов
└── README.md               # Этот файл

🔧 Компоненты

1. LichessWebServices (API)

REST API для получения статистики игроков Lichess.

Возможности:

  • Статистика за сегодня/вчера/неделю
  • Статистика игр по режимам (Bullet, Blitz, Rapid)
  • Статистика решения задач (puzzles)
  • Получение игр за произвольный период

Endpoints:

  • GET /stats/{username}/today - статистика за сегодня
  • GET /stats/{username}/yesterday - статистика за вчера
  • GET /stats/{username}/week - статистика за неделю
  • GET /games/{username}/period - игры за период
  • GET /puzzle/period - задачи за период (требует токен)

2. LichessClientTG_bot (Telegram бот)

Telegram бот для управления отслеживанием игроков.

Возможности:

  • Добавление игроков для отслеживания
  • Выбор активного игрока
  • Получение статистики (сегодня/вчера/неделя)
  • Настройка периодических уведомлений
  • Каждый пользователь имеет свой набор игроков

Команды:

  • /start - начало работы с ботом
  • /adduser - добавить игрока Lichess
  • /getgamers - выбрать активного игрока
  • /today - статистика за сегодня
  • /yesterday - статистика за вчера
  • /week - статистика за неделю
  • /setperiod - настроить уведомления

3. LichessWebView (Веб-интерфейс)

Веб-интерфейс для просмотра пользователей и их игроков.

Возможности:

  • Просмотр всех пользователей бота
  • Фильтрация пользователей по имени/никнейму
  • Отображение игроков каждого пользователя
  • Статистика по каждому пользователю
  • Отображение активных игроков и периодов

🗄️ База данных

Система использует SQLite базу данных с таблицами:

  • telegram_users - пользователи Telegram
  • gamers - игроки Lichess
  • user_gamers - связь пользователей с игроками и настройки

Структура:

  • Каждый пользователь видит только своих игроков
  • У каждого пользователя свой активный игрок
  • Период отслеживания привязывается к паре пользователь-игрок

🐳 Docker

Все компоненты запускаются в Docker контейнерах:

# Запуск всех сервисов
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Остановка всех сервисов
docker-compose down

🔑 Конфигурация

Telegram бот

Токен бота настраивается в LichessClientTG_bot/config.py:

TELEGRAM_BOT_TOKEN = "YOUR_TOKEN_HERE"

Lichess API

Для получения статистики по задачам нужен токен Lichess:

  1. Зайдите на https://lichess.org/account/oauth/token/create
  2. Создайте токен с правами на чтение
  3. Используйте токен при добавлении игрока в боте

📊 API документация

Полная документация API доступна по адресу: http://localhost:8001/docs

Включает:

  • Swagger UI для интерактивного тестирования
  • Описание всех endpoints
  • Примеры запросов и ответов

🛠️ Разработка

Локальная разработка

# API сервис
cd LichessWebServices
docker-compose up -d

# Telegram бот
cd LichessClientTG_bot
docker-compose up -d

# Веб-интерфейс
cd LichessWebView
docker-compose up -d

Логи

# Логи API
docker logs lichesswebservices_lichess-api_1 -f

# Логи бота
docker logs lichess-telegram-bot -f

# Логи веб-интерфейса
docker logs lichess-web-view -f

📝 Лицензия

MIT

👤 Автор

Roman Vrubel

🔗 Полезные ссылки