VNDB Telegram Bot
Полнофункциональный Telegram бот для работы с базой данных VNDB (Visual Novel Database).
Возможности
Бот поддерживает все методы VNDB API v2:
Поиск и запросы
- Визуальные новеллы - полный поиск по названию, языку, платформе, тегам, рейтингу и дате выпуска
- Персонажи - поиск по имени, полу, роли, чертам характера
- Релизы - поиск по названию, платформе, типу, дате выпуска
- Сотрудники - поиск сценаристов, художников, композиторов и других
- Продюсеры - поиск издателей и разработчиков
- Теги - просмотр популярных тегов и категорий
- Черты характера - список черт персонажей
- Цитаты - получение случайных цитат из ВН
Изображения
- Обложки ВН - автоматическая отправка обложек при поиске визуальных новелл
- Аватары персонажей - картинки персонажей при поиске
- Картинки релизов - изображения для каждого релиза
- Подробный просмотр - команды
/vn_detail,/char_detail,/release_detailдля полной информации с высоким качеством изображений
Управление списками (требует токена)
- Добавление ВН в личный список
- Обновление статуса просмотра
- Добавление заметок и оценок
- Управление меткамиме
Информация
- Статистика базы данных
- Информация о схеме API
- Информация об авторизации
Установка
Требования
- Python 3.8+
- pip
Шаг 1: Клонирование репозитория
git clone <repo_url>
cd vntgbot
Шаг 2: Установка зависимостей
pip install -r requirements.txt
Шаг 3: Настройка переменных окружения
Создайте файл .env в корневой папке проекта:
# Обязательно
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
# Опционально (для функций авторизации)
VNDB_TOKEN=your_vndb_api_token_here
Получение токена Telegram Bot
- Напишите боту @BotFather в Telegram
- Используйте команду
/newbot - Следуйте инструкциям и получите токен
Получение VNDB API токена
- Создайте аккаунт на VNDB.org
- Перейдите на https://vndb.org/u/tokens
- Создайте новый токен
- Скопируйте его в переменную
VNDB_TOKEN
Шаг 4: Запуск бота
python bot.py
Использование
Команды
Поиск
/search <название>- Поиск визуальных новелл/char <имя>- Поиск персонажей/release <название>- Поиск релизов/staff <имя>- Поиск сотрудников/producer <название>- Поиск продюсеров
Информация
/tag- Список популярных тегов/trait- Список черт характера/quote [число]- Случайные цитаты (макс. 5)/stats- Статистика базы данных/schema- Информация о схеме API/authinfo- Информация об авторизации (если токен установлен)
Просмотр с картинками
/vn_detail <ID>- Полная информация о ВН с обложкой (Пример: /vn_detail v17)/char_detail <ID>- Информация о персонаже с аватаром (Пример: /char_detail c1)/release_detail <ID>- Информация о релизе с картинкой (Пример: /release_detail r1)
Справка
/start- Приветствие и основная информация/help- Подробная справка по всем командам
Примеры использования
/search Steins Gate
/char Okabe Rintaro
/release Windows
/staff Yoko Taro
/producer Key
/quote 3
/vn_detail v17
/char_detail c25
/release_detail r1
Структура проекта
vntgbot/
├── bot.py # Основной файл бота с обработчиками команд
├── vndb_client.py # VNDB API клиент
├── requirements.txt # Зависимости Python
├── .env # Переменные окружения (не отслеживается в git)
├── .gitignore # Файлы для игнорирования
└── README.md # Этот файл
API Endpoints
Бот поддерживает следующие endpoint'ы VNDB API:
Простые запросы
GET /schema- Информация о схеме APIGET /stats- Статистика базы данныхGET /user- Информация о пользователеGET /authinfo- Информация об авторизации
Запросы к базе данных
POST /vn- Запрос визуальных новеллPOST /release- Запрос релизовPOST /character- Запрос персонажейPOST /staff- Запрос сотрудниковPOST /producer- Запрос продюсеровPOST /tag- Запрос теговPOST /trait- Запрос черт характераPOST /quote- Запрос цитат
Управление списками
POST /ulist- Запрос списка ВН пользователяPOST /rlist- Запрос списка релизов пользователяPATCH /ulist/<id>- Обновление записи в списке ВНPATCH /rlist/<id>- Обновление записи в списке релизовDELETE /ulist/<id>- Удаление из списка ВНDELETE /rlist/<id>- Удаление из списка релизовGET /ulist_labels- Получение меток списка
Фильтры и опции
Поддерживаемые параметры запросов:
- filters - Условия фильтрации
- fields - Выбираемые поля
- sort - Сортировка (id, title, released, rating, votecount)
- reverse - Обратный порядок сортировки
- results - Количество результатов (макс. 100)
- page - Номер страницы для пагинации
- count - Включить общее количество результатов
- user - ID пользователя для фильтров специфичных для пользователя
Ограничения API
VNDB API имеет следующие ограничения:
- 200 запросов за 5 минут
- 1 секунда общего времени выполнения в минуту
- 3 секунды максимального времени для одного запроса
Бот учитывает эти ограничения и использует асинхронные запросы для оптимальной производительности.
Обработка ошибок
Бот обрабатывает следующие типы ошибок:
- Сетевые ошибки (HTTP, timeout)
- Ошибки парсинга JSON
- Ошибки авторизации (401)
- Ошибки валидации данных
Все ошибки логируются и сообщаются пользователю в удобном формате.
Расширение функционала
Для добавления новых команд:
- Добавьте метод в класс
BotHandlers - Зарегистрируйте обработчик в функции
main() - (Опционально) Расширьте
VndbClientновыми методами API
Пример:
@staticmethod
async def my_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
"""Description"""
try:
# Your code here
pass
except Exception as e:
logger.error(f"Error: {e}")
await update.message.reply_text(f"❌ Error: {str(e)}")
# In main():
application.add_handler(CommandHandler("mycommand", BotHandlers.my_command))
Логирование
Бот использует встроенный модуль logging для отслеживания операций. Логи выводятся в консоль с уровнем INFO.
Для изменения уровня логирования отредактируйте bot.py:
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
level=logging.DEBUG # Измените на DEBUG для более подробных логов
)
Документация VNDB API
Полная документация VNDB API доступна по адресу: https://api.vndb.org/kana
Лицензирование
Данные, полученные через VNDB API, подлежат Data License VNDB.
Благодарности
- VNDB за отличную базу данных и API
- python-telegram-bot за удобную библиотеку
Поддержка
Если у вас есть вопросы или проблемы:
- Проверьте файл логов
- Убедитесь, что токены установлены правильно
- Проверьте интернет соединение и статус API VNDB
Автор
Создано для удобного доступа к VNDB из Telegram.