051e4b7c78cdb289cb30a9e487c70eb1d1020176
🐴 Derpibooru Telegram Bot
Telegram-бот, который автоматически публикует изображения с Derpibooru по заданным тегам.
Особенности:
-
Публикация изображений в канал каждый час в 00 минут.
-
Поддержка команд в терминале:
postnow— публикация случайного изображения сразу.posttags tag1 tag2 ...— публикация изображения с указанными тегами.timetopost- отображает время, которое осталось до публикации в секундах.
-
Автоматический backoff при ошибках 500/501 API Derpibooru, чтобы избежать блокировки.
-
В подписи к изображению выводятся все теги, автор и источник.
📂 Структура проекта
derpibooru-telegram-bot/
│
├─ app.py # Основной скрипт бота
├─ sent_images.json # Лог уже отправленных изображений
├─ bot.log # Лог работы бота
├─ README.md # Этот файл
└─ requirements.txt # Зависимости Python
⚙️ Установка
- Клонируем репозиторий:
git clone https://github.com/USERNAME/derpibooru-telegram-bot.git
cd derpibooru-telegram-bot
- Создаём виртуальное окружение и устанавливаем зависимости:
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
pip install -r requirements.txt
- Создаём
requirements.txt:
python-telegram-bot==20.5
aiohttp==3.9.5
- Настраиваем
app.py:
TELEGRAM_TOKEN = "ВАШ_TELEGRAM_TOKEN"
CHANNEL_ID = -100XXXXXXXXX # числовой ID канала
DERPIBOORU_TOKEN = "ВАШ_DERPIBOORU_TOKEN"
TAGS_LIST = [
["тег1"],
["тег2]",
["тег3"]
]
FILTER_ID = 56027 # ID фильтра, разрешающего NSFW
🚀 Запуск
python app.py
- Бот автоматически публикует изображения каждый час.
- В терминале можно писать команды:
postnow
posttags tag1
timetopost
🔧 Как получить FILTER_ID для NSFW
- Зайдите на Derpibooru и авторизуйтесь.
- Перейдите в Filters → Create New Filter.
- Настройте фильтр так, чтобы NSFW контент не скрывался.
- Скопируйте
IDфильтра из URL (пример:https://derpibooru.org/filters/56027→56027). - Подставьте этот
FILTER_IDвapp.py.
📌 Советы
- Убедитесь, что токен Telegram и Derpibooru верны.
- Не используйте теги из категории Safe вместе с NSFW, иначе API вернёт пустой результат.
- Все уже опубликованные изображения сохраняются в
sent_images.json, чтобы не повторять посты.
⚖️ Лицензия
Languages
Python
100%