9.7 KiB
🚀 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. Клонируйте и установите зависимости
pip install -r requirements.txt
2. Получите токены
Telegram Bot Token:
- Напишите @BotFather
- Создайте бота:
/newbot - Скопируйте токен
Lolz API Token:
- Перейдите на zelenka.guru/account/api
- Создайте токен с правами
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
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. Запустите бота
python app.py
📖 Использование
Добавление тем
- Нажмите ➕ Add topics
- Введите ID через запятую:
12345, 67890, 11111 - Бот сразу загрузит реальные названия через batch API и сохранит в БД
Обновление названий
- Нажмите 🔄 Refresh
- Бот загрузит актуальные названия всех тем через batch API
- Обновлённые названия сохранятся в БД
Полезно, если темы переименовали на форуме — не нужно удалять и добавлять заново.
Удаление темы
- Нажмите 🗑️ Delete topic
- Выберите тему из списка
Ручное поднятие
- Нажмите 🚀 Bump topics
- Бот поднимет все темы через batch API
- Получите уведомление о каждой теме:
[1/3] ✅ Тема 9247920 поднята успешно [2/3] ✅ Тема 9247921 поднята успешно [3/3] ❌ Тема 9247922: нужно подождать
Статистика
Нажмите 📊 Statistics — покажет:
- Количество тем (всего / готовы к поднятию)
- Статистика поднятий (всего / успешно / %)
- Дата последнего бампа
- Текущие настройки
- Время работы бота
Статистика сохраняется в SQLite и не сбрасывается при перезапуске.
⚙️ Настройки (меняются на лету)
Все настройки изменяются через кнопку 🛠️ Settings без остановки бота:
| Кнопка | Что меняет | Применяется |
|---|---|---|
| ⏰ Set Interval | Интервал автобампа (часы) | Мгновенно, перезапускает цикл |
| 📦 Set Batch Size | Размер batch (1–10) | Мгновенно для следующих запросов |
| 🔄 Toggle Auto-Bump | Включить/выключить автобамп | Мгновенно |
Настройки хранятся в БД и сохраняются между перезапусками.
🔄 Как работает автоподнятие
- Запускаете бота
- Вручную поднимаете темы через 🚀 (первый раз)
- Бот ждёт указанный интервал (например, 12 часов)
- Автоматически поднимает темы, у которых прошёл интервал
- Цикл повторяется
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.
Ошибка: «⛔ Доступ запрещён»
Ботом может управлять только пользователь, чей Telegram ID указан в ADMIN_USER_ID.
Темы не поднимаются автоматически
- Проверьте, что автобамп включён (🔄 Toggle Auto-Bump)
- Сделайте первое поднятие вручную через 🚀
- Проверьте логи в
bot.log
👤 Автор
Приятного использования! 🚀