Files
2026-05-31 18:24:39 +05:00

9.7 KiB
Raw Permalink Blame History

🚀 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:

  1. Напишите @BotFather
  2. Создайте бота: /newbot
  3. Скопируйте токен

Lolz API Token:

  1. Перейдите на zelenka.guru/account/api
  2. Создайте токен с правами read, post
  3. Скопируйте токен

Ваш Telegram ID:

  1. Напишите @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

📖 Использование

Добавление тем

  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 (110) Мгновенно для следующих запросов
🔄 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.

Ошибка: « Доступ запрещён»

Ботом может управлять только пользователь, чей Telegram ID указан в ADMIN_USER_ID.

Темы не поднимаются автоматически

  1. Проверьте, что автобамп включён (🔄 Toggle Auto-Bump)
  2. Сделайте первое поднятие вручную через 🚀
  3. Проверьте логи в bot.log

👤 Автор

QIYANA


Приятного использования! 🚀