Add spotify search (only search), default menu

This commit is contained in:
BarsTiger
2023-10-16 20:17:10 +03:00
parent c63d8795aa
commit b515fdfd65
18 changed files with 256 additions and 4 deletions

View File

@@ -0,0 +1,2 @@
from .private_button import PrivateButtonMiddleware
from .save_chosen import SaveChosenMiddleware

View File

@@ -0,0 +1,19 @@
from aiogram.dispatcher.middlewares.base import BaseMiddleware
from aiogram.types import CallbackQuery
from typing import Any, Awaitable, Callable, Dict
from bot.modules.database import db
class PrivateButtonMiddleware(BaseMiddleware):
async def __call__(
self,
handler: Callable[[CallbackQuery, Dict[str, Any]], Awaitable[Any]],
event: CallbackQuery,
data: Dict[str, Any],
):
if event.from_user.id == db.inline[event.inline_message_id].from_user.id:
return await handler(event, data)
else:
await event.answer('This button is not for you')

View File

@@ -0,0 +1,46 @@
from aiogram.dispatcher.middlewares.base import BaseMiddleware
from aiogram.types import ChosenInlineResult
from typing import Any, Awaitable, Callable, Dict
from dataclasses import dataclass
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)