117 lines
4.6 KiB
Markdown
117 lines
4.6 KiB
Markdown
|
|
# Lichess Telegram Bot
|
|||
|
|
|
|||
|
|
Телеграм бот для получения статистики игроков Lichess с использованием вашего веб-сервиса.
|
|||
|
|
|
|||
|
|
## Возможности
|
|||
|
|
|
|||
|
|
- **Добавление пользователей**: Добавление игроков Lichess с токеном или без
|
|||
|
|
- **Выбор активного игрока**: Глобальный выбор активного игрока для всех чатов
|
|||
|
|
- **Статистика**: Получение статистики за сегодня, вчера и неделю
|
|||
|
|
- **Периодические уведомления**: Настройка автоматических уведомлений о активности игрока
|
|||
|
|
|
|||
|
|
## Команды
|
|||
|
|
|
|||
|
|
- `/start` - Начать работу с ботом
|
|||
|
|
- `/adduser` - Добавить нового игрока Lichess
|
|||
|
|
- `/getgamers` - Выбрать активного игрока
|
|||
|
|
- `/today` - Статистика за сегодня
|
|||
|
|
- `/yesterday` - Статистика за вчера
|
|||
|
|
- `/week` - Статистика за неделю
|
|||
|
|
- `/setperiod` - Настроить периодические уведомления
|
|||
|
|
|
|||
|
|
## Установка и запуск
|
|||
|
|
|
|||
|
|
### С помощью Docker (рекомендуется)
|
|||
|
|
|
|||
|
|
1. Убедитесь, что ваш Lichess API сервис запущен на `http://localhost:8001`
|
|||
|
|
|
|||
|
|
2. Запустите бота:
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Проверьте логи:
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs -f lichess-bot
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Локальная установка
|
|||
|
|
|
|||
|
|
1. Установите зависимости:
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Скопируйте файл конфигурации:
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Запустите бота:
|
|||
|
|
```bash
|
|||
|
|
python bot.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Конфигурация
|
|||
|
|
|
|||
|
|
Основные настройки находятся в файле `config.py`:
|
|||
|
|
|
|||
|
|
- `TELEGRAM_BOT_TOKEN` - Токен вашего телеграм бота
|
|||
|
|
- `LICHESS_STATS_API_BASE_URL` - URL вашего веб-сервиса (по умолчанию `http://localhost:8001`)
|
|||
|
|
- `PERIOD_OPTIONS` - Доступные периоды для уведомлений
|
|||
|
|
- `POLL_INTERVAL` - Интервал опроса Telegram API (1.0 секунда)
|
|||
|
|
- `POLL_TIMEOUT` - Таймаут для Long Polling (30 секунд)
|
|||
|
|
- `DROP_PENDING_UPDATES` - Игнорировать накопившиеся обновления при запуске
|
|||
|
|
- `ALLOWED_UPDATES` - Типы обновлений для обработки
|
|||
|
|
|
|||
|
|
## Структура проекта
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
├── bot.py # Основной файл бота
|
|||
|
|
├── database.py # Работа с базой данных SQLite
|
|||
|
|
├── lichess_api.py # API клиент для Lichess и вашего сервиса
|
|||
|
|
├── formatters.py # Форматирование ответов
|
|||
|
|
├── config.py # Конфигурация
|
|||
|
|
├── requirements.txt # Python зависимости
|
|||
|
|
├── Dockerfile # Docker образ
|
|||
|
|
├── docker-compose.yml # Docker Compose конфигурация
|
|||
|
|
└── README.md # Документация
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API Endpoints
|
|||
|
|
|
|||
|
|
Бот использует следующие endpoints вашего сервиса:
|
|||
|
|
|
|||
|
|
- `GET /today/{username}` - Статистика за сегодня
|
|||
|
|
- `GET /yesterday/{username}` - Статистика за вчера
|
|||
|
|
- `GET /week/{username}` - Статистика за неделю
|
|||
|
|
- `GET /games/{username}/period` - Игры за период
|
|||
|
|
- `GET /puzzle/period` - Задачи за период (требует токен)
|
|||
|
|
|
|||
|
|
## База данных
|
|||
|
|
|
|||
|
|
Используется SQLite база данных с таблицами:
|
|||
|
|
|
|||
|
|
- `gamers` - Игроки Lichess
|
|||
|
|
- `chat_active_gamers` - Активные игроки по чатам (не используется для глобального режима)
|
|||
|
|
|
|||
|
|
## Логирование
|
|||
|
|
|
|||
|
|
Бот ведет подробные логи всех операций. В Docker контейнере логи можно просмотреть командой:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs -f lichess-bot
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Мониторинг
|
|||
|
|
|
|||
|
|
Docker Compose включает health checks для мониторинга состояния сервисов.
|
|||
|
|
|
|||
|
|
## Поддержка
|
|||
|
|
|
|||
|
|
При возникновении проблем проверьте:
|
|||
|
|
|
|||
|
|
1. Запущен ли ваш Lichess API сервис на порту 8001
|
|||
|
|
2. Правильность токена телеграм бота
|
|||
|
|
3. Логи контейнера на наличие ошибок
|