Улучшение обработки команд: удаление функции выбора случайной новеллы и функции вывода топ-10 новелл
This commit is contained in:
31
bot.py
31
bot.py
@@ -3,7 +3,6 @@ import logging
|
||||
import re
|
||||
import httpx
|
||||
import random
|
||||
import random
|
||||
from aiogram import Bot, Dispatcher, types
|
||||
from aiogram.filters import Command, CommandObject
|
||||
from aiogram.client.default import DefaultBotProperties
|
||||
@@ -110,38 +109,10 @@ async def handle_vn(message: types.Message, command: CommandObject):
|
||||
)
|
||||
await send_result(message, text, img)
|
||||
|
||||
@dp.message(Command("random"))
|
||||
async def handle_random(message: types.Message):
|
||||
"""Выбирает случайную новеллу из 50 популярных с высоким рейтингом."""
|
||||
# Фильтр: рейтинг > 75, популярность высокая
|
||||
res = await fetch_vndb("vn", ["rating", ">=", 75], "id, title, image{url}, rating, description", sort="votecount", results=50)
|
||||
if not res: return await message.answer("❌ API error")
|
||||
|
||||
v = random.choice(res)
|
||||
text = (
|
||||
f"🎲 <b>RANDOM VN PICK</b>\n\n"
|
||||
f"<b>TITLE:</b> {v['title']}\n"
|
||||
f"<b>RATING:</b> {v['rating']/10} ⭐\n\n"
|
||||
f"<b>DESCRIPTION:</b>\n<i>{clean_text(v.get('description'), 300)}</i>\n\n"
|
||||
f"<b>VNDB:</b> https://vndb.org/{v['id']}"
|
||||
)
|
||||
await send_result(message, text, v.get('image', {}).get('url'))
|
||||
|
||||
@dp.message(Command("top"))
|
||||
async def handle_top(message: types.Message):
|
||||
"""Выводит топ-10 новелл по рейтингу."""
|
||||
res = await fetch_vndb("vn", ["votecount", ">", 1000], "id, title, rating", sort="rating", results=10)
|
||||
if not res: return await message.answer("❌ API error")
|
||||
|
||||
out = ["🏆 <b>TOP RATED VISUAL NOVELS</b>\n"]
|
||||
for i, v in enumerate(res, 1):
|
||||
out.append(f"{i}. {v['title']} — <b>{v['rating']/10}</b> (<code>{v['id']}</code>)")
|
||||
|
||||
await message.answer("\n".join(out))
|
||||
|
||||
@dp.message(Command("char"))
|
||||
async def handle_char(message: types.Message, command: CommandObject):
|
||||
if not command.args: return await message.answer("Usage: /char <name/id>")
|
||||
|
||||
is_id = command.args.startswith('c') and command.args[1:].isdigit()
|
||||
filt = ["id", "=", command.args] if is_id else ["search", "=", command.args]
|
||||
fields = "id, name, original, description, gender, age, blood_type, image{url}"
|
||||
|
||||
Reference in New Issue
Block a user