async def get_lyrics(search: str) -> Optional[str]: async with get_response.get_session() as session: async with session.post( "http://www.glyrics.xyz/search", json={"searchTerm": search}, headers={"content-type": "application/json"}, ) as resp: if not resp.status == 200: return result = await resp.json() if lyrics := result.get("lyrics"): nl = "\n" return post_to_telegraph(search, f'<pre>{lyrics.replace(nl, "<br>")}</pre>')
async def inline_answer(_, inline_query: InlineQuery): results = [] i_q = inline_query.query string = i_q.lower() # All lower str_x = i_q.split(" ", 2) # trigger @username Text str_y = i_q.split(" ", 1) # trigger and Text string_split = string.split() # All lower and Split each word iq_user_id = inline_query.from_user.id if ((iq_user_id in Config.OWNER_ID) or (iq_user_id in Config.SUDO_USERS) and Config.SUDO_ENABLED): if string == "syntax": owner = [[ InlineKeyboardButton(text="Contact", url="https://t.me/deleteduser420") ]] results.append( InlineQueryResultPhoto( photo_url= "https://coverfiles.alphacoders.com/123/123388.png", caption="Hey I solved **𝚂𝚢𝚗𝚝𝚊𝚡's ░ Σrr♢r**", reply_markup=InlineKeyboardMarkup(owner), )) if string == "age_verification_alert": buttons = [[ InlineKeyboardButton( text="Yes I'm 18+", callback_data="age_verification_true"), InlineKeyboardButton( text="No I'm Not", callback_data="age_verification_false"), ]] results.append( InlineQueryResultPhoto( photo_url="https://i.imgur.com/Zg58iXc.jpg", caption="**ARE YOU OLD ENOUGH FOR THIS ?**", reply_markup=InlineKeyboardMarkup(buttons), )) if str_y[0] == "reddit": reddit_api = "https://meme-api.herokuapp.com/gimme/" if len(str_y) == 2: subreddit_regex = r"^([a-zA-Z]+)\.$" match = re.search(subreddit_regex, str_y[1]) if match: subreddit_name = match.group(1) reddit_api += f"{subreddit_name}/30" else: return else: reddit_api += "30" try: r = await get_response.json(reddit_api) except ValueError: results.append( InlineQueryResultArticle( title="Reddit Api is Down !", input_message_content=InputTextMessageContent( "**Error Code: Status != 200**"), thumb_url="https://i.imgur.com/7a7aPVa.png", )) else: if "code" in r: bool_is_gallery = False code = r["code"] code_message = r["message"] results.append( InlineQueryResultArticle( title=str(code), input_message_content=InputTextMessageContent( f"**Error Code: {code}**\n`{code_message}`" ), description="Enter A Valid Subreddit Name !", thumb_url="https://i.imgur.com/7a7aPVa.png", )) else: bool_is_gallery = True for post in r["memes"]: if "url" in post: postlink = post["postLink"] subreddit = post["subreddit"] title = post["title"] media_url = post["url"] author = post["author"] upvote = post["ups"] captionx = f"<b>{title}</b>\n" captionx += f"`Posted by u/{author}`\n" captionx += f"↕️ <code>{upvote}</code>\n" thumbnail = reddit_thumb_link(post["preview"]) if post["spoiler"]: captionx += "⚠️ Post marked as SPOILER\n" if post["nsfw"]: captionx += "🔞 Post marked Adult \n" buttons = [[ InlineKeyboardButton( f"Source: r/{subreddit}", url=postlink) ]] if media_url.endswith(".gif"): results.append( InlineQueryResultAnimation( animation_url=media_url, thumb_url=thumbnail, caption=captionx, reply_markup=InlineKeyboardMarkup( buttons), )) else: results.append( InlineQueryResultPhoto( photo_url=media_url, thumb_url=thumbnail, caption=captionx, reply_markup=InlineKeyboardMarkup( buttons), )) await inline_query.answer( results=results, cache_time=1, is_gallery=bool_is_gallery, switch_pm_text="Available Commands", switch_pm_parameter="inline", ) return if string == "alive": alive_info = Bot_Alive.alive_info() buttons = Bot_Alive.alive_buttons() if not Config.ALIVE_MEDIA: results.append( InlineQueryResultPhoto( photo_url=Bot_Alive.alive_default_imgs(), caption=alive_info, reply_markup=buttons, )) else: if Config.ALIVE_MEDIA.lower().strip() == "false": results.append( InlineQueryResultArticle( title="USERGE-X", input_message_content=InputTextMessageContent( alive_info, disable_web_page_preview=True), description="ALIVE", reply_markup=buttons, )) else: _media_type, _media_url = await Bot_Alive.check_media_link( Config.ALIVE_MEDIA) if _media_type == "url_gif": results.append( InlineQueryResultAnimation( animation_url=_media_url, caption=alive_info, reply_markup=buttons, )) elif _media_type == "url_image": results.append( InlineQueryResultPhoto( photo_url=_media_url, caption=alive_info, reply_markup=buttons, )) elif _media_type == "tg_media": c_file_id = Bot_Alive.get_bot_cached_fid() if c_file_id is None: try: c_file_id = get_file_id( await userge.bot.get_messages( _media_url[0], _media_url[1])) except Exception as b_rr: await CHANNEL.log(str(b_rr)) if Bot_Alive.is_photo(c_file_id): results.append( InlineQueryResultCachedPhoto( file_id=c_file_id, caption=alive_info, reply_markup=buttons, )) else: results.append( InlineQueryResultCachedDocument( title="USERGE-X", file_id=c_file_id, caption=alive_info, description="ALIVE", reply_markup=buttons, )) if string == "geass": results.append( InlineQueryResultAnimation( animation_url="https://i.imgur.com/DeZHcRK.gif", caption="To defeat evil, I must become a greater evil", )) if str_y[0] == "inotes" and len(str_y) == 2: note_data = str_y[1].split("_", 2) note_data = [int(x) for x in note_data] if len(note_data) == 3: cnote = await get_inote(note_id=note_data[0], chat_id=note_data[1], user_id=note_data[2]) type_ = cnote.get("type") if type_ == "image": results.append( InlineQueryResultCachedPhoto( file_id=cnote.get("file_id"), caption=cnote.get("caption"), reply_markup=cnote.get("buttons"), )) elif type_ == "media": results.append( InlineQueryResultCachedDocument( title="Inline Note", file_id=cnote.get("file_id"), caption=cnote.get("caption"), description=f"#{note_data[0]}", reply_markup=cnote.get("buttons"), )) else: results.append( InlineQueryResultArticle( title="Inline Note", input_message_content=InputTextMessageContent( cnote.get("caption"), disable_web_page_preview=True), description=f"#{note_data[0]}", reply_markup=cnote.get("buttons"), )) if string == "gapps": buttons = [ [ InlineKeyboardButton("Open GApps", callback_data="open_gapps"), InlineKeyboardButton("Flame GApps", callback_data="flame_gapps"), ], [ InlineKeyboardButton("Nik GApps", callback_data="nik_gapps") ], ] results.append( InlineQueryResultArticle( title="GApps", input_message_content=InputTextMessageContent( "[\u200c](https://i.imgur.com/BZBMrfn.jpg) **LATEST Android 10 arm64 GApps**" ), description= "Get Latest GApps Download Links Directly from SF", thumb_url="https://i.imgur.com/Npzw8Ph.png", reply_markup=InlineKeyboardMarkup(buttons), )) if len(string_split) == 2 and (string_split[0] == "ofox"): codename = string_split[1] t = TelegraphPoster(use_api=True) t.create_api_token("Userge-X") photo = "https://i.imgur.com/582uaSk.png" api_host = "https://api.orangefox.download/v2/device/" try: async with get_response.get_session() as session: r = await get_response.json(f"{api_host}{codename}", session=session) s = await get_response.json( f"{api_host}{codename}/releases/stable/last", session=session, ) except ValueError: return info = f"📱 **Device**: {r['fullname']}\n" info += f"👤 **Maintainer**: {r['maintainer']['name']}\n\n" recovery = f"🦊 <code>{s['file_name']}</code>\n" recovery += f"📅 {s['date']}\n" recovery += f"ℹ️ **Version:** {s['version']}\n" recovery += f"📌 **Build Type:** {s['build_type']}\n" recovery += f"🔰 **Size:** {s['size_human']}\n\n" recovery += "📍 **Changelog:**\n" recovery += f"<code>{s['changelog']}</code>\n\n" msg = info msg += recovery notes_ = s.get("notes") if notes_: notes = t.post(title="READ Notes", author="", text=notes_) buttons = [[ InlineKeyboardButton("🗒️ NOTES", url=notes["url"]), InlineKeyboardButton("⬇️ DOWNLOAD", url=s["url"]), ]] else: buttons = [[ InlineKeyboardButton(text="⬇️ DOWNLOAD", url=s["url"]) ]] results.append( InlineQueryResultPhoto( photo_url=photo, thumb_url="https://i.imgur.com/o0onLYB.jpg", title="Latest OFOX RECOVERY", description=f"For device : {codename}", caption=msg, reply_markup=InlineKeyboardMarkup(buttons), )) if string == "repo": results.append(REPO_X) if len(str_y) == 2 and str_y[0] == "anime": for i in await Anime.search(str_y[1]): results.append( InlineQueryResultArticle( title=i.get("title"), input_message_content=InputTextMessageContent( f'[\u200c]({i.get("image")})**{i.get("title")}**\n{i.get("release")}' ), description=i.get("release"), thumb_url=i.get("image"), reply_markup=InlineKeyboardMarkup([[ InlineKeyboardButton( text="⬇️ Download", callback_data=f'get_eps{i.get("key")}', ) ]]), )) if len(results) != 0: await inline_query.answer( results=results[:50], cache_time=1, switch_pm_text="Available Commands", switch_pm_parameter="inline", ) return if str_y[0] == "spoiler": if not os.path.exists("./userge/xcache/spoiler_db.json"): results.append( InlineQueryResultArticle( title="No Spoiler Found", input_message_content=InputTextMessageContent( "No Spoiler Found !\nLet's Add Some 😈"), description="See .help spoiler for more info", )) else: bot_name = (await userge.bot.get_me()).username if len(str_y) == 2: link = f"https://t.me/{bot_name}?start=spoiler_{str_y[1]}" buttons = [[ InlineKeyboardButton(text="View Spoiler", url=link) ]] results.append( InlineQueryResultArticle( title="Spoiler", input_message_content=InputTextMessageContent( "<b>Click To View The Spoiler !</b>"), description="Click To Send", thumb_url= "https://telegra.ph/file/ee3a6439494463acd1a3a.jpg", reply_markup=InlineKeyboardMarkup(buttons), )) else: fo = open("./userge/xcache/spoiler_db.json") view_db = ujson.load(fo) fo.close() if len(view_db) != 0: for numm, spoilerr in enumerate(view_db, start=1): buttons = [[ InlineKeyboardButton( text="View Spoiler", url= f"https://t.me/{bot_name}?start=spoiler_{spoilerr}", ) ]] saved_at = view_db.get(spoilerr, None) savetime = (saved_at.get("savetime", None) if saved_at else None) results.append( InlineQueryResultArticle( title=f"#{numm} Spoiler", input_message_content= InputTextMessageContent( "<b>Click To View The Spoiler !</b>" ), description=f"Created At: {savetime}", thumb_url= "https://telegra.ph/file/ee3a6439494463acd1a3a.jpg", reply_markup=InlineKeyboardMarkup( buttons), )) if str_x[0].lower() == "op" and len(str_x) > 1: txt = i_q[3:] opinion = os.path.join(PATH, "emoji_data.txt") if os.path.exists(opinion): with open(opinion) as fo: view_data = ujson.load(fo) # Uniquely identifies an inline message new_id = {int(inline_query.id): [{}]} view_data.update(new_id) else: view_data = {int(inline_query.id): [{}]} with open(opinion, "w") as outfile: ujson.dump(view_data, outfile) buttons = [[ InlineKeyboardButton( "👍", callback_data=f"op_y_{inline_query.id}"), InlineKeyboardButton( "👎", callback_data=f"op_n_{inline_query.id}"), ]] results.append( InlineQueryResultArticle( title="Ask For Opinion", input_message_content=InputTextMessageContent(txt), description=f"Q. {txt}", thumb_url="https://i.imgur.com/Zlc98qS.jpg", reply_markup=InlineKeyboardMarkup(buttons), )) if "btn_" in str_y[0] or str_y[0] == "btn": inline_db_path = "./userge/xcache/inline_db.json" if os.path.exists(inline_db_path): with open(inline_db_path, "r") as data_file: view_db = ujson.load(data_file) data_count_n = 1 reverse_list = list(view_db) reverse_list.reverse() for butt_ons in reverse_list: if data_count_n > 30: view_db.pop(butt_ons, None) data_count_n += 1 with open(inline_db_path, "w") as data_file: ujson.dump(view_db, data_file) if str_y[0] == "btn": inline_storage = list(view_db) else: rnd_id = (str_y[0].split("_", 1))[1] inline_storage = [rnd_id] if len(inline_storage) == 0: return for inline_content in inline_storage: inline_db = view_db.get(inline_content) if inline_db: if (inline_db["media_valid"] and int(inline_db["media_id"]) != 0): saved_msg = await userge.bot.get_messages( Config.LOG_CHANNEL_ID, int(inline_db["media_id"])) media_data = get_file_id(saved_msg) textx, buttonsx = pb(inline_db["msg_content"]) if inline_db["media_valid"]: if saved_msg.photo: results.append( InlineQueryResultCachedPhoto( file_id=media_data, caption=textx, reply_markup=buttonsx, )) else: results.append( InlineQueryResultCachedDocument( title=textx, file_id=media_data, caption=textx, description="Inline Button", reply_markup=buttonsx, )) else: results.append( InlineQueryResultArticle( title=textx, input_message_content= InputTextMessageContent(textx), reply_markup=buttonsx, )) if str_y[0].lower() == "stylish" and len(str_y) == 2: results = [] for f_name in Styled.font_choice: styled_str = await font_gen(f_name, str_y[1]) results.append( InlineQueryResultArticle( title=f_name.upper(), input_message_content=InputTextMessageContent( f"`{styled_str}`"), description=styled_str, )) await inline_query.answer( results=results, cache_time=1, switch_pm_text="Available Commands", switch_pm_parameter="inline", ) return if str_x[0].lower() in ["secret", "troll"] and len(str_x) == 3: user_name = str_x[1] msg = str_x[2] try: receiver = await userge.get_users(user_name) except (BadRequest, IndexError): return secret = os.path.join(PATH, "secret.json") key_ = rand_key() r_name = (("@" + receiver.username) if receiver.username else f"{receiver.first_name} {receiver.last_name or ''}") secret_data = { key_: { "sender": iq_user_id, "receiver": { "id": receiver.id, "name": r_name }, "msg": msg, "views": [], } } if os.path.exists(secret): with open(secret) as outfile: view_data = ujson.load(outfile) view_data.update(secret_data) else: view_data = secret_data # Save with open(secret, "w") as r: ujson.dump(view_data, r, indent=4) if str_x[0].lower() == "secret": c_data = f"secret_{key_}" i_m_content = f"📩 <b>Secret Msg</b> for <b>{r_name}</b>. Only he/she can open it." i_l_des = f"Send Secret Message to: {r_name}" title = "Send A Secret Message" thumb_img = "https://i.imgur.com/c5pZebC.png" else: c_data = f"troll_{key_}" i_m_content = f"😈 Only <b>{r_name}</b> can't view this message. UwU" i_l_des = f"Message Hidden from {r_name}" title = "😈 Troll" thumb_img = "https://i.imgur.com/0vg5B0A.png" buttons = [[ InlineKeyboardButton("🔐 SHOW", callback_data=c_data) ]] results.append( InlineQueryResultArticle( title=title, input_message_content=InputTextMessageContent( i_m_content), description=i_l_des, thumb_url=thumb_img, reply_markup=InlineKeyboardMarkup(buttons), )) if str_y[0].lower() == "ytdl" and len(str_y) == 2: link = get_yt_video_id(str_y[1].strip()) found_ = True if link is None: search = VideosSearch(str_y[1].strip(), limit=15) resp = (search.result()).get("result") if len(resp) == 0: found_ = False else: outdata = await result_formatter(resp) key_ = rand_key() ytsearch_data.store_(key_, outdata) buttons = InlineKeyboardMarkup([ [ InlineKeyboardButton( text=f"1 / {len(outdata)}", callback_data=f"ytdl_next_{key_}_1", ) ], [ InlineKeyboardButton( text="📜 List all", callback_data=f"ytdl_listall_{key_}_1", ), InlineKeyboardButton( text="⬇️ Download", callback_data= f'ytdl_download_{outdata[1]["video_id"]}_0', ), ], ]) caption = outdata[1]["message"] photo = outdata[1]["thumb"] else: caption, buttons = await download_button(link, body=True) photo = await get_ytthumb(link) if found_: results.append( InlineQueryResultPhoto( photo_url=photo, title=link, description="⬇️ Click to Download", caption=caption, reply_markup=buttons, )) else: results.append( InlineQueryResultArticle( title="not Found", input_message_content=InputTextMessageContent( f"No Results found for `{str_y[1]}`"), description="INVALID", )) MAIN_MENU = InlineQueryResultArticle( title="Main Menu", input_message_content=InputTextMessageContent( " 𝐔𝐒𝐄𝐑𝐆𝐄-𝐗 𝗠𝗔𝗜𝗡 𝗠𝗘𝗡𝗨 "), url="https://github.com/code-rgb/USERGE-X", description="Userge-X Main Menu", thumb_url="https://i.imgur.com/1xsOo9o.png", reply_markup=InlineKeyboardMarkup(main_menu_buttons()), ) results.append(MAIN_MENU) if len(results) != 0: await inline_query.answer( results=results, cache_time=1, switch_pm_text="Available Commands", switch_pm_parameter="inline", ) else: results.append(REPO_X) owner_name = (await userge.get_me()).first_name await inline_query.answer( results=results, cache_time=1, switch_pm_text=f"This bot is only for {owner_name}", switch_pm_parameter="start", )
async def info(msg: Message): """To check User's info""" await msg.edit("`Checking...`") user_id = msg.input_str replied = msg.reply_to_message if not user_id: if replied: user_id = (replied.forward_from.id if replied.forward_from else replied.from_user.id) else: user_id = msg.from_user.id try: user = await msg.client.get_users(user_id) except Exception: await msg.edit("I don't know that User...") return await msg.edit("`Getting Info...`") l_name = user.last_name or "" if user.username: username = "******" + user.username else: username = "******" common_chats = await msg.client.get_common_chats(user.id) user_info = f""" **About [{user.first_name} {l_name}](tg://user?id={user.id})**: - **UserID**: `{user.id}` - **Data Center**: `{user.dc_id}` - **Username**: {username} - **Last Online**: `{last_online(user)}` - **Common Groups**: `{len(common_chats)}` - **Contact**: `{user.is_contact}` """ if user: if Config.SPAM_WATCH_API: status = spamwatch.Client(Config.SPAM_WATCH_API).get_ban(user.id) if status is False: user_info += "\n**SpamWatch Banned** : `False`\n" else: user_info += "\n**SpamWatch Banned** : `True`\n" user_info += f" **• Reason** : `{status.reason or None}`\n" user_info += f" **• Message** : `{status.message or None}`\n" else: user_info += "\n**SpamWatch Banned** : `to get this Info, set var`\n" antispam_api = [ "https://api.intellivoid.net/spamprotection/v1/lookup?query=", "https://api.cas.chat/check?user_id=", ] async with get_response.get_session() as session: try: iv = await get_response.json(f"{antispam_api[0]}{user_id}", session=session) except ValueError: iv = False try: cas_banned = await get_response.json( f"{antispam_api[1]}{user.id}", session=session) except ValueError: cas_banned = False user_gbanned = await GBAN_USER_BASE.find_one({"user_id": user.id}) user_gmuted = await GMUTE_USER_BASE.find_one({"user_id": user.id}) if iv and (iv["success"] and iv["results"]["attributes"]["is_blacklisted"] is True): reason = iv["results"]["attributes"]["blacklist_reason"] user_info += "**Intellivoid SpamProtection** : `True`\n" user_info += f" **• Reason** : `{reason}`\n" else: user_info += "**Intellivoid SpamProtection** : `False`\n" if cas_banned and (cas_banned["ok"]): reason = cas_banned["result"]["messages"][0] or None user_info += "**AntiSpam Banned** : `True`\n" user_info += f" **• Reason** : `{reason}`\n" else: user_info += "**AntiSpam Banned** : `False`\n" if user_gmuted: user_info += "**User GMuted** : `True`\n" user_info += f" **• Reason** : `{user_gmuted['reason'] or None}`\n" else: user_info += "**User GMuted** : `False`\n" if user_gbanned: user_info += "**User GBanned** : `True`\n" user_info += f" **• Reason** : `{user_gbanned['reason'] or None}`" else: user_info += "**User Gbanned** : `False`" await msg.edit_or_send_as_file(text=user_info, disable_web_page_preview=True)