diff --git a/bot.py b/bot.py index 936e816..6fd5ac5 100644 --- a/bot.py +++ b/bot.py @@ -182,8 +182,8 @@ Staff: {stats.get('staff', 0)} ) results = await vndb_client.query_vn( - filters=["search", "=", query.strip().lower()], # ✔️ без вложенности - fields=["id", "title", "image{url}"], + filters=["search", "=", query.strip().lower()], + fields=["id", "title", "image.url"], results=10 ) @@ -200,14 +200,12 @@ Staff: {stats.get('staff', 0)} # images for vn in results["results"][:3]: - img = vn.get("image") - if img and img.get("url"): - try: - await update.message.reply_photo( - photo=f"https://t.vndb.org{img['url']}" - ) - except Exception as e: - logger.warning(e) + img_url = vn.get("image.url") or vn.get("image", {}).get("url") + + if img_url: + await update.message.reply_photo( + photo=f"https://t.vndb.org{img_url}" + ) except Exception as e: logger.error(e) @@ -228,15 +226,15 @@ Staff: {stats.get('staff', 0)} return ConversationHandler.END results = await vndb_client.query_character( - filters=["search", "=", query.strip().lower()], # ✔️ важно - fields=["id", "name", "image{url}"], + filters=["search", "=", query.strip().lower()], + fields=["id", "name", "original", "image.url"], results=10 ) text = "Персонажи:\n\n" for c in results.get("results", []): - text += f"{c.get('id')} - {c.get('name')}\n" + text += f"{c.get('id')} - {c.get('name')} ({c.get('original', '')})\n" await update.message.reply_text(text, parse_mode="HTML") diff --git a/vndb_client.py b/vndb_client.py index 8fe0bf3..0169438 100644 --- a/vndb_client.py +++ b/vndb_client.py @@ -51,7 +51,7 @@ class VndbClient: def _safe_filters(self, filters: Optional[List[Any]]) -> List[Any]: if not filters: - return ["id", ">", 0] + return [] return filters async def _request( @@ -135,27 +135,10 @@ class VndbClient: compact_filters: bool = False, normalized_filters: bool = False, ) -> Dict[str, Any]: - """ - Query visual novels - - Args: - filters: Filter conditions - fields: Fields to retrieve - sort: Sort field (id, title, released, rating, votecount, searchrank) - reverse: Sort in descending order - results: Number of results per page (max 100) - page: Page number starting from 1 - count: Include total count - user: User ID for user-specific filters - compact_filters: Include compact filter representation - normalized_filters: Include normalized filter representation - - Returns: - Query results - """ + data = { "filters": filters or [], - "fields": ",".join(fields) if fields else "id", + "fields": ",".join(fields) if fields else "id,title,image.url", "sort": sort, "reverse": reverse, "results": results, @@ -164,9 +147,10 @@ class VndbClient: "compact_filters": compact_filters, "normalized_filters": normalized_filters, } + if user: data["user"] = user - + return await self._request(VndbEndpoint.VN.value, "POST", data) async def query_release( @@ -185,7 +169,7 @@ class VndbClient: """Query releases""" data = { "filters": filters or [], - "fields": ",".join(fields) if fields else "id", + "fields": ",".join(fields) if fields else "id,title", "sort": sort, "reverse": reverse, "results": results, @@ -213,8 +197,8 @@ class VndbClient: ) -> Dict[str, Any]: data = { - "filters": self._safe_filters(filters), - "fields": ",".join(fields) if fields else "id,name", + "filters": filters or [], + "fields": ",".join(fields) if fields else "id,name,original,image.url", "sort": sort, "reverse": reverse, "results": results,