Refactor VNDB Telegram Bot

- Remove config.py and integrate environment variable handling directly in docker-compose.yml.
- Delete detailed_handlers.py and replace with simplified command handlers.
- Update requirements.txt to use aiogram and httpx instead of python-telegram-bot and requests.
- Remove test_bot.py and utils.py, consolidating functionality into new VNDBClient class.
- Implement VNDBClient for API interactions, simplifying query methods for visual novels, characters, and releases.
- Clean up docker-compose.yml for improved readability and maintainability.
This commit is contained in:
2026-05-01 18:04:13 +03:00
parent fd0a403f37
commit 88bba02983
19 changed files with 142 additions and 6647 deletions

50
vndb.py Normal file
View File

@@ -0,0 +1,50 @@
import httpx
class VNDBClient:
def __init__(self, base_url):
self.base = base_url.rstrip("/")
self.client = httpx.AsyncClient(timeout=10)
async def _post(self, endpoint, payload):
try:
r = await self.client.post(f"{self.base}/{endpoint}", json=payload)
if r.status_code != 200:
return None
data = r.json()
return data.get("results", [])
except Exception:
return None
async def search_vn(self, query):
return await self._post("vn", {
"filters": ["search", "=", query],
"fields": "id,title,original,released,rating,votecount",
"results": 5
})
async def get_vn(self, vid):
res = await self._post("vn", {
"filters": ["id", "=", vid],
"fields": "id,title,original,released,rating,votecount",
"results": 1
})
return res[0] if res else None
async def get_char(self, cid):
res = await self._post("character", {
"filters": ["id", "=", cid],
"fields": "id,name,original",
"results": 1
})
return res[0] if res else None
async def get_release(self, rid):
res = await self._post("release", {
"filters": ["id", "=", rid],
"fields": "id,title,released",
"results": 1
})
return res[0] if res else None