Files
AnyMusicBot/bot/middlewares/save_chosen.py
2024-11-02 00:10:44 +02:00

47 lines
1.2 KiB
Python

from dataclasses import dataclass
from typing import Any, Awaitable, Callable, Dict
from aiogram.dispatcher.middlewares.base import BaseMiddleware
from aiogram.types import ChosenInlineResult
from bot.modules.database import db
@dataclass
class SavedUser:
id: int
first_name: str
last_name: str | None
username: str | None
language_code: str | None
@dataclass
class SavedResult:
result_id: str
from_user: SavedUser
query: str
inline_message_id: str
class SaveChosenMiddleware(BaseMiddleware):
async def __call__(
self,
handler: Callable[[ChosenInlineResult, Dict[str, Any]], Awaitable[Any]],
event: ChosenInlineResult,
data: Dict[str, Any],
):
db.inline[event.inline_message_id] = SavedResult(
result_id=event.result_id,
from_user=SavedUser(
id=event.from_user.id,
first_name=event.from_user.first_name,
last_name=event.from_user.last_name,
username=event.from_user.username,
language_code=event.from_user.language_code,
),
query=event.query,
inline_message_id=event.inline_message_id,
)
return await handler(event, data)