async def yt_music_func(answers, url, user_id): if user_id not in SUDOERS: msg = "**ERROR**\n__THIS FEATURE IS ONLY FOR SUDO USERS__" answers.append( InlineQueryResultArticle( title="ERROR", description="THIS FEATURE IS ONLY FOR SUDO USERS", input_message_content=InputTextMessageContent(msg), )) return answers if "http" not in url: url = (await arq.youtube(url)).result[0] url = f"https://youtube.com{url.url_suffix}" title, performer, duration, audio, thumbnail = await download_youtube_audio( url) m = await app.send_audio( MESSAGE_DUMP_CHAT, audio, title=title, duration=duration, performer=performer, thumb=thumbnail, ) os.remove(audio) os.remove(thumbnail) answers.append( InlineQueryResultCachedDocument(title=title, file_id=m.audio.file_id)) return answers
async def yt_music_func(answers, url): if "http" not in url: url = (await arq.youtube(url)).result[0] url = f"https://youtube.com{url.url_suffix}" loop = asyncio.get_running_loop() music = await loop.run_in_executor(None, download_youtube_audio, url) if not music: msg = "**ERROR**\n__MUSIC TOO LONG__" answers.append( InlineQueryResultArticle( title="ERROR", description="MUSIC TOO LONG", input_message_content=InputTextMessageContent(msg), )) return answers ( title, performer, duration, audio, thumbnail, ) = music m = await app.send_audio( MESSAGE_DUMP_CHAT, audio, title=title, duration=duration, performer=performer, thumb=thumbnail, ) os.remove(audio) os.remove(thumbnail) answers.append( InlineQueryResultCachedDocument(title=title, file_id=m.audio.file_id)) return answers
async def music_inline_func(answers, query): chat_id = -1001445180719 group_invite = "https://t.me/joinchat/vSDE2DuGK4Y4Nzll" try: messages = [ m async for m in app2.search_messages( chat_id, query, filter="audio", limit=199 ) ] except Exception as e: print(e) msg = f"You Need To Join Here With Your Bot And Userbot To Get Cached Music.\n{group_invite}" answers.append( InlineQueryResultArticle( title="ERROR", description="Click Here To Know More.", input_message_content=InputTextMessageContent( msg, disable_web_page_preview=True ), ) ) return answers messages_ids_and_duration = [] for f_ in messages: messages_ids_and_duration.append( { "message_id": f_.message_id, "duration": f_.audio.duration if f_.audio.duration else 0, } ) messages = list( {v["duration"]: v for v in messages_ids_and_duration}.values() ) messages_ids = [] for ff_ in messages: messages_ids.append(ff_["message_id"]) messages = await app.get_messages(chat_id, messages_ids[0:48]) for message_ in messages: answers.append( InlineQueryResultCachedDocument( file_id=message_.audio.file_id, title=message_.audio.title ) ) return answers
async def carbon_inline_func(answers, link): link = link.split("/") if link[3] == "c": chat, message_id = int("-100" + link[4]), int(link[5]) else: chat, message_id = link[3], link[4] m = await app.get_messages(chat, message_ids=int(message_id)) if not m.text and not m.document: m = await app2.get_messages(chat, message_ids=int(message_id)) if m.text: content = m.text else: if m.document.file_size > 1048576: answers.append( InlineQueryResultArticle( title="DOCUMENT TOO BIG", description="Maximum supported size is 1MB", input_message_content=InputTextMessageContent( "DOCUMENT TOO BIG" ), ) ) return answers doc = await m.download() async with aiofiles.open(doc, mode="r") as f: content = await f.read() os.remove(doc) image = await make_carbon(content) link = await paste(content) # To Pre-cache the media carbon = await app.send_document(MESSAGE_DUMP_CHAT, image) os.remove(image) buttons = InlineKeyboard(row_width=1) buttons.add(InlineKeyboardButton(text="Paste Link", url=link)) answers.append( InlineQueryResultCachedDocument( file_id=carbon.document.file_id, title="Carbon", reply_markup=buttons, ) ) return answers