Skip to content

Repository files navigation

Booru Feed Bot for Telegram

Асинхронный Telegram бот, автоматически находящий и отправляющий в чат новые медиафайлы с Danbooru (Kagamihara) по указанным пользователем тегам и настройкам, индивидуальным для каждого чата.

⚙️ Используемые технологии

Категория Технологии и библиотеки Назначение
Язык Python 3.10+ Язык разработки
Telegram API Aiogram 3.x Работа с Telegram Bot API
База данных Peewee ORM + SQLite Хранение тегов, настроек чатов, статусов постов и очередей
Планировщик задач APScheduler Автоматический запуск задач по расписанию
HTTP-запросы Aiohttp Асинхронные запросы к Danbooru API
Обработка изображений Pillow (PIL) Изменение размера и обработка изображений
Логирование Встроенный logging Логи работы бота и отладочная информация
Конфигурация окружения .env, переменные окружения Хранение токенов и настроек
Контейнеризация Docker (опционально) Удобный деплой и изоляция окружения

📖 История создания и планы по развитию

Я веду Telegram канал и решила автоматизировать процесс поиска нового контента, чтобы вручную не просматривать каждый тег на Danbooru и ничего не пропустить. Для этого и был разработан Booru Feed Bot. Сейчас бот стабильно работает в нескольких чатах. Однако с ростом числа чатов начали появляться проблемы. В ближайших планах — реализация очередей и кэширования, чтобы обеспечить масштабируемость и стабильную работу при высокой нагрузке.

🤖 Основные возможности

  • Поиск новых медиафайлов по заданным пользователем тегам.
  • Управление цензурой (включить/выключить/не присылать медифайлы с возрастным ограничением).
  • Управление списком тегов (добавить/удалить/показать список тегов для чата).
  • Настройка интервала, с которым бот присылает новые медиафайлы.
  • Поддержка групп и супергрупп: каждый чат имеет свой уникальный список тегов и настройки.

💻 Команды

Команды для всех пользователей:

  • /help — Как пользоваться ботом.
  • /ping — Проверка работы бота.

Команды для администраторов:

  • /start_fetch — запустить поиск новых медиафайлов.
  • /stop_fetch — остановить поиск новых медиафайлов.
  • /censor_status — управление цензурой.
  • /add_tag — добавить тег(и) для поиска.
  • /remove_tag — удалить тег(и) из списка.
  • /show_tags — показать список тегов для текущего чата.
  • /change_interval — изменить интервал поиска медиафайлов.

⚙️ Использование команд

⏱ Настройки интервала

  • По умолчанию бот проверяет новые публикации каждые 10 минут.
  • Чтобы изменить интервал, используйте команду /change_interval и укажите интервал в минутах.

Пример: для интервала в 5 минут введите /change_interval 5.

🏷 Управление списком тегов

  • Добавить теги: /add_tag (укажите один или несколько тегов через пробел). В начале можете указать дату, с которой будет осуществляться поиск медиафайлов. По умолчанию поиск начинается с момента запуска бота в чате.

    Примеры: /add_tag 1girl landscape; /add_tag 2025-09-11 1girl

  • Удалить теги: /remove_tag (укажите один или несколько тегов через пробел).

    Пример: /remove_tag 1girl

Каждый чат имеет свой уникальный список тегов. Вы можете просмотреть текущий список через команду /show_tags.

🔞 Управление цензурой

  • 0 — присылать медиафайлы с возрастным ограничением без спойлера.
  • 1 — присылать медиафайлы с возрастным ограничением со спойлером.
  • 2 — не присылать медиафайлы с возрастным ограничением вообще.

Пример: для включения цензуры введите /censor_status 1

🐋 Установка через Docker

Требования

  • Установленный Docker

Скачивание образа из Docker Hub

catgirldev/booru_feed

Конфигурация

Создание и переход в директорию проекта:

mkdir booru_feed && cd booru_feed

Создание .env файла (необходимо получить токен бота у BotFather в Telegram):

curl -O https://raw.githubusercontent.com/catgirl-dev/booru_feed/main/env.example .env
nano .env  # Вставьте токен бота и настройки. Удалите кавычки

Запуск контейнера

docker run -d \
  --restart always \
  --name booru_feed \
  --env-file .env \
  catgirldev/booru_feed

Проверка логов бота:

docker logs booru_feed

🚀 Локальный запуск

Требования

  • Python 3.8+
  • pip

Клонирование репозитория

git clone https://github.com/catgirl-dev/booru_feed.git
cd booru_feed

Установка зависимостей

Перед установкой зависимостей рекомендуется использовать виртуальное окружение.

Linux/MacOS

python -m venv venv              # создание виртуального окружения
source venv/bin/activate         # активация окружения
pip install -r requirements.txt  # установка зависимостей

Windows

python -m venv venv               # создание виртуального окружения
venv\Scripts\activate             # активация окружения
pip install -r requirements.txt   # установка зависимостей

Запуск бота

python run.py

Как начать пользоваться ботом в Telegram

  1. Добавьте бота в ваш чат.
  2. Запустите поиск медиа через команду /start_fetch.
  3. Настройте список тегов через команду /add_tag и укажите один или несколько тегов через пробел. В начале можете указать дату, с которой начнётся поиск в формате 2025-09-11.

⚠️ Примечание: по умолчанию, без указания даты, поиск новых картинок по тегам начнется через заданный интервал от времени, когда вы ввели команду /add_tag. Популярный тег для проверки: 1girl.

📃 Лицензия

Этот проект лицензирован под GNU General Public License v3.0 — подробнее в файле LICENSE.

📩 Обратная связь

Если у вас есть вопросы или предложения, вы можете написать в Issues.

💖 Поддержка разработчицы

Если вам нравится бот, вы можете поддержать разработку: XMR:
46jBm2zQXg3jJyCSzkaTYE5FXtrePNtFSfx42KshL6nYGBc2fd7hxS142WVAfrHQVtBKK7R64KUq1Vm7TQZkD71YDNp4pRF


Сделано с ❤️ для вашего удобства.

About

Telegram Bot that sends new Danbooru posts by user-specified tags and per-chat settings

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages