Files
AnyMusicBot/bot/results/common/search.py
2024-11-02 00:10:24 +02:00

51 lines
1.6 KiB
Python

from aiogram.types import (
InlineQueryResultDocument,
InlineQueryResultCachedAudio,
InlineKeyboardMarkup,
InlineKeyboardButton,
)
from bot.modules.database.db import DBDict
from bot.modules.settings import UserSettings
from bot.modules.common.song import BaseSongItem
from typing import TypeVar
BaseSongT = TypeVar("BaseSongT", bound=BaseSongItem)
async def get_common_search_result(
audio: BaseSongT, db_table: DBDict, service_id: str, settings: UserSettings
) -> InlineQueryResultDocument | InlineQueryResultCachedAudio:
return (
InlineQueryResultDocument(
id=f"{service_id}::" + audio.id,
title=audio.name,
description=audio.all_artists,
thumb_url=audio.thumbnail,
document_url=(
(audio.preview_url or audio.thumbnail)
if settings["search_preview"].value == "preview"
else audio.thumbnail
),
mime_type="application/zip",
reply_markup=InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text="Downloading...", callback_data=".")]
]
),
caption=audio.full_name,
)
if audio.id not in list(db_table.keys())
else InlineQueryResultCachedAudio(
id=f"{service_id}c::" + audio.id,
audio_file_id=db_table[audio.id],
reply_markup=InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text="Verifying...", callback_data=".")]
]
),
)
)