Files
Auto-Pump/README.md
T
2026-05-31 18:24:39 +05:00

241 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 QIYANA AUTO-BUMP BOT для Lolz.live
Telegram бот для автоматического поднятия тем на форуме Lolz.live. Batch API, динамические настройки (меняются на лету без перезапуска), персистентная статистика.
## ✨ Возможности
- **Добавление тем** — через запятую, названия загружаются сразу через batch API
- 🗑️ **Удаление тем** — через интерактивное меню
- 📋 **Список тем** — с названиями из БД и датой последнего поднятия
- 🚀 **Ручное поднятие** — все темы немедленно через batch API
- 🔄 **Обновление названий** — синхронизация названий тем с форумом по кнопке
-**Автоподнятие** — каждые N часов автоматически
- 🛠️ **Динамические настройки** — интервал, batch size, автобамп меняются через меню без перезапуска
- 📊 **Статистика** — сохраняется в БД, не теряется при перезапуске
- 🔔 **Уведомления** — о результате каждого поднятия
- 🛡️ **Защита доступа** — ботом управляет только админ (по Telegram ID)
-**Batch API** — до 10 тем за один запрос
## 🎮 Интерфейс
```
┌──────────────────────────────────────┐
Add topics │ 📋 List of topics │
│ 🗑️ Delete topic │ 🚀 Bump topics │
│ 🔄 Refresh │ 📊 Statistics │
│ 🛠️ Settings │ 👤 Author │
└──────────────────────────────────────┘
```
### Меню настроек
```
┌──────────────────────────────────┐
│ ⏰ Set Interval │
│ 📦 Set Batch Size │
│ 🔄 Toggle Auto-Bump │
│ ↩️ Back to Menu │
└──────────────────────────────────┘
```
## 📦 Установка
### Требования
- Python 3.12+
- pip
### 1. Клонируйте и установите зависимости
```bash
pip install -r requirements.txt
```
### 2. Получите токены
**Telegram Bot Token:**
1. Напишите [@BotFather](https://t.me/BotFather)
2. Создайте бота: `/newbot`
3. Скопируйте токен
**Lolz API Token:**
1. Перейдите на [zelenka.guru/account/api](https://zelenka.guru/account/api)
2. Создайте токен с правами `read`, `post`
3. Скопируйте токен
**Ваш Telegram ID:**
1. Напишите [@userinfobot](https://t.me/userinfobot) и получите свой ID
### 3. Настройте `.env`
```env
# Telegram Bot
BOT_API_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
BOT_IMG_URL=https://wallpapers-clan.com/wp-content/uploads/2024/04/dark-anime-girl-with-red-eyes-desktop-wallpaper-preview.jpg
BOT_AUTHOR_URL=https://lolz.live/kqlol/
# Lolz API
API_BASE_URL=https://prod-api.lolz.live
API_AUTH_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGc...
API_BATCH_SIZE=10
# Database
DB_PATH=threads.db
# Scheduling
BUMP_INTERVAL_HOURS=12
BUMP_DELAY_SECONDS=2
ENABLE_AUTO_BUMP=true
# Admin (ваш Telegram user ID)
ADMIN_USER_ID=123456789
```
### 4. Запустите бота
```bash
python app.py
```
## 📖 Использование
### Добавление тем
1. Нажмите ** Add topics**
2. Введите ID через запятую: `12345, 67890, 11111`
3. Бот сразу загрузит реальные названия через batch API и сохранит в БД
### Обновление названий
1. Нажмите **🔄 Refresh**
2. Бот загрузит актуальные названия всех тем через batch API
3. Обновлённые названия сохранятся в БД
Полезно, если темы переименовали на форуме — не нужно удалять и добавлять заново.
### Удаление темы
1. Нажмите **🗑️ Delete topic**
2. Выберите тему из списка
### Ручное поднятие
1. Нажмите **🚀 Bump topics**
2. Бот поднимет все темы через batch API
3. Получите уведомление о каждой теме:
```
[1/3] ✅ Тема 9247920 поднята успешно
[2/3] ✅ Тема 9247921 поднята успешно
[3/3] ❌ Тема 9247922: нужно подождать
```
### Статистика
Нажмите **📊 Statistics** — покажет:
- Количество тем (всего / готовы к поднятию)
- Статистика поднятий (всего / успешно / %)
- Дата последнего бампа
- Текущие настройки
- Время работы бота
Статистика сохраняется в SQLite и не сбрасывается при перезапуске.
## ⚙️ Настройки (меняются на лету)
Все настройки изменяются через кнопку **🛠️ Settings** без остановки бота:
| Кнопка | Что меняет | Применяется |
|--------|-----------|-------------|
| ⏰ Set Interval | Интервал автобампа (часы) | Мгновенно, перезапускает цикл |
| 📦 Set Batch Size | Размер batch (1–10) | Мгновенно для следующих запросов |
| 🔄 Toggle Auto-Bump | Включить/выключить автобамп | Мгновенно |
Настройки хранятся в БД и сохраняются между перезапусками.
## 🔄 Как работает автоподнятие
1. Запускаете бота
2. Вручную поднимаете темы через 🚀 (первый раз)
3. Бот ждёт указанный интервал (например, 12 часов)
4. Автоматически поднимает темы, у которых прошёл интервал
5. Цикл повторяется
```
00:00 — Запуск бота
00:05 — Ручное поднятие
12:05 — Автоматическое поднятие
24:05 — Автоматическое поднятие
```
## 🏗️ Архитектура
```
app.py # Бот: хендлеры, middleware аутентификации, авто-бамп
config_manager.py # Загрузка и валидация .env
api_client.py # Lolz batch API клиент с retry логикой
database.py # SQLite: темы, настройки, статистика
```
### Что внутри БД (SQLite через aiosqlite)
| Таблица | Назначение |
|---------|-----------|
| `threads` | Темы: ID, название, дата последнего бампа |
| `settings` | Динамические настройки (интервал, batch_size, автобамп) |
| `bump_stats` | Персистентная статистика (всего/успешно/последний бамп) |
### Ключевые особенности
- **Batch API** — до 10 тем за запрос (экономия лимитов в 10 раз)
- **Динамические настройки** — меняются в БД, подхватываются ботом мгновенно
- **Персистентная статистика** — не теряется при перезапуске
- **Аутентификация** — middleware проверяет Telegram ID админа
- **Async context managers** — автоматическая очистка ресурсов
- **Frozen dataclasses с `__slots__`** — иммутабельность и экономия памяти
- **WAL-режим SQLite** — лучшая конкурентность
## 📝 Логи
- **Консоль** — основные события
- **bot.log** — детальные логи с traceback
## 🔧 Зависимости
- **Python**: 3.12+
- **aiogram**: 3.15.0
- **aiohttp**: bundled with aiogram
- **aiosqlite**: 0.20.0+
- **python-dotenv**: 1.0.0+
## 🐛 Troubleshooting
### Ошибка: «BOT_API_TOKEN not configured»
Проверьте `.env` — заполните `BOT_API_TOKEN` реальным токеном от @BotFather.
### Ошибка: «ADMIN_USER_ID not configured»
Укажите в `.env` ваш Telegram ID (получить через @userinfobot).
### Ошибка: «API_AUTH_TOKEN not configured»
Проверьте токен на [zelenka.guru/account/api](https://zelenka.guru/account/api).
### Ошибка: «⛔ Доступ запрещён»
Ботом может управлять только пользователь, чей Telegram ID указан в `ADMIN_USER_ID`.
### Темы не поднимаются автоматически
1. Проверьте, что автобамп включён (🔄 Toggle Auto-Bump)
2. Сделайте первое поднятие вручную через 🚀
3. Проверьте логи в `bot.log`
## 👤 Автор
[QIYANA](https://lolz.live/kqlol/)
---
**Приятного использования! 🚀**