Files
derpibooru-telegram-bot/README.md
DarkShyMW 16ee57b158 Add tests
2025-08-23 09:54:40 +03:00

111 lines
3.5 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.
# 🐴 Derpibooru Telegram Bot
![Tests](https://github.com/DarkShyMW/derpibooru-telegram-bot/actions/workflows/tests.yml/badge.svg)
Telegram-бот, который автоматически публикует изображения с [Derpibooru](https://derpibooru.org) по заданным тегам.
Особенности:
* Публикация изображений в канал каждый час в 00 минут.
* Поддержка команд в терминале:
* `postnow` — публикация случайного изображения сразу.
* `posttags tag1 tag2 ...` — публикация изображения с указанными тегами.
* Автоматический backoff при ошибках 500/501 API Derpibooru, чтобы избежать блокировки.
* В подписи к изображению выводятся все теги, автор и источник.
---
## 📂 Структура проекта
```
derpibooru-telegram-bot/
├─ app.py # Основной скрипт бота
├─ sent_images.json # Лог уже отправленных изображений
├─ bot.log # Лог работы бота
├─ README.md # Этот файл
└─ requirements.txt # Зависимости Python
```
---
## ⚙️ Установка
1. Клонируем репозиторий:
```bash
git clone https://github.com/USERNAME/derpibooru-telegram-bot.git
cd derpibooru-telegram-bot
```
2. Создаём виртуальное окружение и устанавливаем зависимости:
```bash
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
pip install -r requirements.txt
```
3. Создаём `requirements.txt`:
```
python-telegram-bot==20.5
aiohttp==3.9.5
```
4. Настраиваем `app.py`:
```python
TELEGRAM_TOKEN = "ВАШ_TELEGRAM_TOKEN"
CHANNEL_ID = -100XXXXXXXXX # числовой ID канала
DERPIBOORU_TOKEN = "ВАШ_DERPIBOORU_TOKEN"
TAGS_LIST = [
["тег1"],
["тег2]",
["тег3"]
]
FILTER_ID = 56027 # ID фильтра, разрешающего NSFW
```
---
## 🚀 Запуск
```bash
python app.py
```
* Бот автоматически публикует изображения каждый час.
* В терминале можно писать команды:
```
postnow
posttags tag1
```
---
## 🔧 Как получить `FILTER_ID` для NSFW
1. Зайдите на [Derpibooru](https://derpibooru.org/) и авторизуйтесь.
2. Перейдите в **Filters****Create New Filter**.
3. Настройте фильтр так, чтобы **NSFW контент не скрывался**.
4. Скопируйте `ID` фильтра из URL (пример: `https://derpibooru.org/filters/56027``56027`).
5. Подставьте этот `FILTER_ID` в `app.py`.
---
## 📌 Советы
* Убедитесь, что токен Telegram и Derpibooru верны.
* Не используйте теги из категории Safe вместе с NSFW, иначе API вернёт пустой результат.
* Все уже опубликованные изображения сохраняются в `sent_images.json`, чтобы не повторять посты.
---
## ⚖️ Лицензия
[MIT License](https://github.com/DarkShyMW/derpibooru-telegram-bot/blob/main/LICENSE).