Асинхронный 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
Создание и переход в директорию проекта:
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Перед установкой зависимостей рекомендуется использовать виртуальное окружение.
python -m venv venv # создание виртуального окружения
source venv/bin/activate # активация окружения
pip install -r requirements.txt # установка зависимостейpython -m venv venv # создание виртуального окружения
venv\Scripts\activate # активация окружения
pip install -r requirements.txt # установка зависимостейpython run.py- Добавьте бота в ваш чат.
- Запустите поиск медиа через команду
/start_fetch. - Настройте список тегов через команду
/add_tagи укажите один или несколько тегов через пробел. В начале можете указать дату, с которой начнётся поиск в формате2025-09-11.
⚠️ Примечание: по умолчанию, без указания даты, поиск новых картинок по тегам начнется через заданный интервал от времени, когда вы ввели команду/add_tag. Популярный тег для проверки:1girl.
Этот проект лицензирован под GNU General Public License v3.0 — подробнее в файле LICENSE.
Если у вас есть вопросы или предложения, вы можете написать в Issues.
Если вам нравится бот, вы можете поддержать разработку:
XMR:
46jBm2zQXg3jJyCSzkaTYE5FXtrePNtFSfx42KshL6nYGBc2fd7hxS142WVAfrHQVtBKK7R64KUq1Vm7TQZkD71YDNp4pRF
Сделано с ❤️ для вашего удобства.