🚀 QIYANA AUTO-BUMP BOT для Lolz.live
Telegram бот для автоматического поднятия тем на форуме Lolz.live. Batch API, тикающий планировщик, динамические настройки (меняются на лету без перезапуска), персистентная статистика.
Клиент сверен с официальной спецификацией API (forum.json — Lolzteam Public API v1.1.44a).
✨ Возможности
- ➕ Добавление тем — через запятую, названия загружаются сразу через batch API
- 📥 Мои темы — выбор своих тем прямо с форума (пагинация, тап — добавить), без ручного ввода ID
- 🗑️ Удаление тем — через интерактивное меню
- 📋 Список тем — с названиями и датой последнего поднятия
- 🚀 Ручное поднятие — все темы немедленно через batch API
- 🔄 Обновление названий — синхронизация названий тем с форумом по кнопке
- ⏰ Автоподнятие — тикающий планировщик (каждые 60 секунд проверяет, какие темы «созрели»), настройки применяются без перезапуска
- 🛠️ Динамические настройки — интервал, batch size, автобамп меняются через меню
- 📊 Статистика — сохраняется в БД, не теряется при перезапуске
- 🔔 Уведомления — о результате каждого поднятия
- 🛡️ Защита доступа — ботом управляет только админ (по Telegram ID)
- ⚡ Batch API — до 10 тем за один запрос, обработка 429 и rate-limit заголовков
🎮 Интерфейс
┌──────────────────────────────────────┐
│ ➕ Add topics │ 📥 My topics │
│ 📋 List of topics│ 🗑️ Delete topic │
│ 🚀 Bump topics │ 🔄 Refresh │
│ 📊 Statistics │ 🛠️ Settings │
│ 👤 Author │
└──────────────────────────────────────┘
📦 Установка
Требования
- Python 3.12+
- pip
1. Клонируйте и установите зависимости
pip install -r requirements.txt
2. Получите токены
Telegram Bot Token:
- Напишите @BotFather
- Создайте бота:
/newbot - Скопируйте токен
Lolz API Token:
- Перейдите на lolz.live/account/api
- Создайте токен с правами (scopes)
read,post - Скопируйте токен
Ваш Telegram ID:
- Напишите @userinfobot и получите свой ID
3. Настройте .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
# Официальные серверы: https://api.lolz.team, https://api.lolz.live, https://api.zelenka.guru
API_BASE_URL=https://api.lolz.live
API_AUTH_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGc...
API_BATCH_SIZE=10
# Database
DB_PATH=threads.db
# Scheduling
BUMP_INTERVAL_MINUTES=5
BUMP_DELAY_SECONDS=1
ENABLE_AUTO_BUMP=true
SCHEDULER_TICK_SECONDS=60
# Admin (ваш Telegram user ID)
ADMIN_USER_ID=123456789
BOT_IMG_URLможно оставить пустым — бот отправит меню текстом.
4. Запустите бота
python app.py
На старте бот проверяет токен через GET /users/me и пишет в лог, от какого аккаунта работает.
📖 Использование
Добавление тем
- Нажмите ➕ Add topics
- Введите ID через запятую:
12345, 67890, 11111 - Бот загрузит названия через batch API и сохранит в БД
Либо нажмите 📥 My topics — бот покажет ваши темы с форума (по GET /threads?tab=mythreads) с пагинацией; нажмите на тему, чтобы добавить её.
Ручное поднятие
- Нажмите 🚀 Bump topics
- Бот поднимет все темы через batch API
- Получите уведомление о каждой теме:
[1/3] ✅ Тема 9247920 поднята успешно [2/3] ✅ Тема 9247921 поднята успешно [3/3] ❌ Тема 9247922: нужно подождать
Обновление названий (🔄 Refresh)
Бот загружает актуальные названия тем с форума. Полезно, если темы переименовали.
Статистика
Нажмите 📊 Statistics — покажет:
- Количество тем (всего / готовы к поднятию)
- Статистика поднятий (всего / успешно / %)
- Дата последнего бампа
- Текущие настройки
- Время работы бота
Статистика сохраняется в SQLite и не сбрасывается при перезапуске.
⚙️ Настройки (меняются на лету)
| Кнопка | Что меняет | Применяется |
|---|---|---|
| ⏰ Set Interval | Интервал автобампа в минутах (5, 720, …) |
На следующем тике планировщика (до 60 с) |
| 📦 Set Batch Size | Размер batch (1–10) | Мгновенно для следующих запросов |
| 🔄 Toggle Auto-Bump | Включить/выключить автобамп | Мгновенно |
Настройки хранятся в БД и сохраняются между перезапусками.
🔄 Как работает автоподнятие
Планировщик тикающий: каждые SCHEDULER_TICK_SECONDS (по умолчанию 60 с) бот читает настройки из БД, находит темы, у которых прошёл интервал, и поднимает их. Плюсы:
- темы, добавленные позже, подхватываются в ближайший тик;
- смена интервала применяется без перезапуска и без «потери фазы»;
- бот бампает ровно по таймеру, без обращений к форуму перед бампом.
00:00 — Запуск бота (тик каждые 60с)
00:05 — Ручное поднятие
00:10 — Первый тик, где тема «созрела» → автоподнятие
🌐 Лимиты API (по спецификации)
| Эндпоинт | Лимит |
|---|---|
| GET-запросы | 300 / минуту |
| Не-GET (в т.ч. bump) | 30 / минуту |
/batch |
20 / минуту (независимый бакет) |
При превышении API возвращает 429 и заголовки X-RateLimit-*. Бот читает их и ждёт сброса окна, а между batch-вызовами соблюдает паузу BUMP_DELAY_SECONDS.
🏗️ Архитектура
app.py # Бот: хендлеры, middleware аутентификации, тикающий авто-бамп
config_manager.py # Загрузка и валидация .env
api_client.py # Lolz batch API клиент: union-парсер ответов, rate-limit, retry
database.py # SQLite: темы, настройки, статистика
Что внутри БД (SQLite через aiosqlite)
| Таблица | Назначение |
|---|---|
threads |
Темы: ID, название, дата последнего бампа |
settings |
Динамические настройки (интервал, batch_size, автобамп) |
bump_stats |
Персистентная статистика (всего/успешно/последний бамп) |
Ключевые особенности
- Batch API — до 10 тем за запрос; job'ы ключуются явным
id(по спецификации) - Union-парсер bump-ответов — понимает и документированную форму
{status, message, system_info}, и «пустой ответ = успех», и legacy_job_result - Тикающий планировщик — настройки применяются без перезапуска
- Ретраи только там, где есть смысл — сеть/5xx/429; 4xx не ретраятся
- Персистентная статистика — не теряется при перезапуске
- Аутентификация — middleware проверяет Telegram ID админа
- 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»
Проверьте токен на lolz.live/account/api. В логе при старте будет API token validation failed, если токен невалиден.
Ошибка: «⛔ Доступ запрещён»
Ботом может управлять только пользователь, чей Telegram ID указан в ADMIN_USER_ID.
Темы не поднимаются автоматически
- Проверьте, что автобамп включён (🔄 Toggle Auto-Bump)
- Сделайте первое поднятие вручную через 🚀
- Проверьте логи в
bot.log— ошибки от форума (например, «нужно подождать») видны по каждой теме
👤 Автор
Приятного использования! 🚀