diff --git a/misskaty/plugins/inline_search.py b/misskaty/plugins/inline_search.py index 1f875fe9..e50b27ee 100644 --- a/misskaty/plugins/inline_search.py +++ b/misskaty/plugins/inline_search.py @@ -27,9 +27,10 @@ To use this feature, just type bot username with following args below. ~ pypi [query] - Search package from Pypi. ~ git [query] - Search in Git. ~ google [query] - Search in Google. +~ info [user id/username] - Check info about a user. """ -keywords_list = ["imdb", "pypi", "git", "google", "secretmsg"] +keywords_list = ["imdb", "pypi", "git", "google", "secretmsg", "info"] PRVT_MSGS = {} @@ -142,6 +143,39 @@ async def inline_menu(_, inline_query: InlineQuery): switch_pm_text=f"Found {len(data)} results", switch_pm_parameter="google", ) + elif inline_query.query.strip().lower().split()[0] == "info": + if len(inline_query.query.strip().lower().split()) < 2: + return await inline_query.answer( + results=[], + switch_pm_text="User Info | info [id/username]", + switch_pm_parameter="inline", + ) + userr = inline_query.query.split(None, 1)[1].strip() + try: + diaa = await app.get_users(userr) + except Exception: # pylint: disable=broad-except + inline_query.stop_propagation() + return + namanya = ( + f"{diaa.first_name} {diaa.last_name}" if diaa.last_name else diaa.first_name + ) + msg = f"🏷 Name: {namanya}\n🆔 ID: {diaa.id}" + if diaa.username: + msg += f"🌐 Username: @{diaa.username}" + msg += f"🕰 User Status: {diaa.status}" + if diaa.dc_id: + msg += f"🌏 DC: {diaa.dc_id}" + msg += f"✨ Premium: {diaa.is_premium}" + msg += f"⭐️ Verified: {diaa.is_verified}" + msg += f"🇮🇩 Language: {diaa.language_code}" + results = [ + InlineQueryResultArticle( + title=f"Get information off {penerima.id}", + input_message_content=InputTextMessageContent(msg), + description=f"Get information off {penerima.id}", + ) + ] + await inline_query.answer(results=results, cache_time=3) elif inline_query.query.strip().lower().split()[0] == "secretmsg": if len(inline_query.query.strip().lower().split()) < 3: return await inline_query.answer( diff --git a/misskaty/plugins/misc_tools.py b/misskaty/plugins/misc_tools.py index 27b64709..8003daf4 100644 --- a/misskaty/plugins/misc_tools.py +++ b/misskaty/plugins/misc_tools.py @@ -530,7 +530,7 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): if query.from_user.id != int(userid): return await query.answer("⚠️ Akses Ditolak!", True) try: - await query.message.edit_caption("Permintaan kamu sedang diproses.. ") + await query.message.edit_caption("⏳ Permintaan kamu sedang diproses.. ") url = f"https://www.imdb.com/title/tt{movie}/" resp = await get_content(url) sop = BeautifulSoup(resp, "lxml") diff --git a/misskaty/plugins/sub_extractor.py b/misskaty/plugins/sub_extractor.py index e40147aa..41e324f9 100644 --- a/misskaty/plugins/sub_extractor.py +++ b/misskaty/plugins/sub_extractor.py @@ -23,7 +23,8 @@ ARCH_EXT = [".mkv", ".avi", ".mp4", ".mov"] __MODULE__ = "MediaExtract" __HELP__ = """ -/extractmedia [URL] - Extract subtitle or audio from video using link. +/extractmedia [URL] - Extract subtitle or audio from video using link. (Not support TG File to reduce bandwith usage.) +/converttosrt [Reply to .ass or .vtt TG File] - Convert from .ass or .vtt to srt """ @@ -46,12 +47,18 @@ def get_subname(url, format): async def ceksub(_, m): cmd = m.text.split(" ", 1) if len(cmd) == 1: - return await m.reply(f"Gunakan command /{m.command[0]} [link] untuk mengecek subtitle dan audio didalam video.") + return await m.reply( + f"Gunakan command /{m.command[0]} [link] untuk mengecek subtitle dan audio didalam video." + ) link = cmd[1] start_time = perf_counter() pesan = await m.reply("Sedang memproses perintah..", quote=True) try: - res = (await shell_exec(f"ffprobe -loglevel 0 -print_format json -show_format -show_streams {link}"))[0] + res = ( + await shell_exec( + f"ffprobe -loglevel 0 -print_format json -show_format -show_streams {link}" + ) + )[0] details = json.loads(res) buttons = [] for stream in details["streams"]: @@ -84,26 +91,37 @@ async def ceksub(_, m): ) except Exception: err = traceback.format_exc() - await pesan.edit(f"Gagal extract media data.\nLink: {link}\nERROR: {err}") - - -ALLOWED_USER = [978550890, 617426792, 2024984460, 1533008300, 1985689491] + await pesan.edit( + f"Failed extract media, make sure your link is not protected by WAF or maybe inaccessible for bot." + ) @app.on_message(filters.command(["converttosrt"], COMMAND_HANDLER)) @capture_err -async def convertsrt(_, m): +async def convertsrt(c, m): reply = m.reply_to_message - if not reply and reply.document: - return await m.reply(f"Gunakan command /{m.command[0]} dengan mereply ke file ass untuk convert subtitle ke srt.") - msg = await m.reply("Sedang memproses perintah...") + if ( + not reply + and reply.document + and ( + reply.document.file_name.endswith(".vtt") + or reply.document.file_name.endswith(".ass") + ) + ): + return await m.reply( + f"Use command /{m.command[0]} by reply to .ass or .vtt file, to convert subtitle from .ass or .vtt to srt." + ) + msg = await m.reply("⏳ Converting...") dl = await reply.download() - (await shell_exec(f"mediaextract -i {dl} {os.path.basename(dl)}.srt"))[0] - await m.reply_document(f"{os.path.basename(dl)}.srt", caption=f"{os.path.basename(dl)}.srt") + filename = dl.split("/", 3)[3] + (await shell_exec(f"mediaextract -i '{dl}' {filename}.srt"))[0] + await m.reply_document( + f"{filename}.srt", caption=f"{filename}.srt\n\nConverted by @{c.me.username}" + ) await msg.delete() try: os.remove(dl) - os.remove(f"{os.path.basename(dl)}.srt") + os.remove(f"{filename}.srt") except: pass @@ -119,7 +137,7 @@ async def stream_extract(bot, update): link = update.message.reply_to_message.command[1] except: return await update.answer("⚠️ DONT DELETE YOUR MESSAGE!", True) - await update.message.edit("Processing...") + await update.message.edit("⏳ Processing...") try: if codec == "aac": format = "aac" @@ -129,16 +147,24 @@ async def stream_extract(bot, update): format = "eac3" elif codec == "subrip": format = "srt" - else: + elif codec == "ass": format == "ass" + else: + format = None + if not format: + return await update.answer( + "⚠️ Unsupported format, try extract manual using ffmpeg" + ) start_time = perf_counter() namafile = get_subname(link, format) - extract = (await shell_exec(f"mediaextract -i {link} -map 0:{map} {namafile}"))[0] + extract = (await shell_exec(f"mediaextract -i {link} -map 0:{map} {namafile}"))[ + 0 + ] end_time = perf_counter() timelog = "{:.2f}".format(end_time - start_time) + " second" await update.message.reply_document( namafile, - caption=f"Filename: {namafile}\n\nExtracted by @{BOT_USERNAME} in {timelog}", + caption=f"Filename: {namafile}\n\nExtracted by @{bot.me.username} in {timelog}", reply_to_message_id=usr.id, ) await update.message.delete()