async def crypto(_, message): if len(message.command) < 2: return await message.reply("/crypto [currency]") currency = message.text.split(None, 1)[1].lower() btn = ikb( {"Available Currencies": "https://plotcryptoprice.herokuapp.com"}, ) m = await message.reply("`Processing...`") try: r = await get( "https://x.wazirx.com/wazirx-falcon/api/v2.0/crypto_rates", timeout=5, ) except Exception: return await m.edit("[ERROR]: Something went wrong.") if currency not in r: return await m.edit( "[ERROR]: INVALID CURRENCY", reply_markup=btn, ) body = {i.upper(): j for i, j in r.get(currency).items()} text = section( "Current Crypto Rates For " + currency.upper(), body, ) await m.edit(text, reply_markup=btn)
async def cancel_task_button(_, query: CallbackQuery): user_id = query.from_user.id if user_id not in SUDOERS: return await query.answer("This is not for you.") task_id = int(query.data.split("_")[-1]) await rm_task(task_id) tasks = all_tasks() text = await _get_tasks_text() keyb = None if tasks: keyb = ikb({i: f"cancel_task_{i}" for i in list(tasks.keys())}) await app.edit_inline_text( query.inline_message_id, text, ) if keyb: await app.edit_inline_reply_markup( query.inline_message_id, keyb, )
async def paste_func(_, message): if not message.reply_to_message: return await message.reply("Reply To A Message With /paste") r = message.reply_to_message if not r.text and not r.document: return await message.reply("Only text and documents are supported.") m = await message.reply("Pasting...") if r.text: content = str(r.text) elif r.document: if r.document.file_size > 40000: return await m.edit("You can only paste files smaller than 40KB.") if not pattern.search(r.document.mime_type): return await m.edit("Only text files can be pasted.") doc = await message.reply_to_message.download() async with aiofiles.open(doc, mode="r") as f: content = await f.read() os.remove(doc) link = await paste(content) kb = ikb({"Paste Link": link}) try: await message.reply_photo(photo=link, quote=False, reply_markup=kb) except Exception: await message.reply("Here's your paste", reply_markup=kb) await m.delete()
async def logs_chat(_, message): keyboard = ikb({"📎 Pastebin 📎": callback}) time = (datetime.now()).strftime("%d/%m/%Y %H:%M:%S") caption = f""" **Time:** `{time}` **Log Type:** `ERROR` """ try: await message.reply_document(log_file, caption=caption, reply_markup=keyboard) except ValueError: await message.reply_text("**LOGS ARE EMPTY**")
async def mute(_, message: Message): user_id, reason = await extract_user_and_reason(message) if not user_id: return await message.reply_text("I can't find that user.") if user_id == BOT_ID: return await message.reply_text("I can't mute myself.") if user_id in SUDOERS: return await message.reply_text( "You wanna mute the elevated one?, RECONSIDER!" ) if user_id in (await list_admins(message.chat.id)): return await message.reply_text( "I can't mute an admin, You know the rules, so do i." ) await message.chat.restrict_member( user_id, permissions=ChatPermissions() ) mention = (await app.get_users(user_id)).mention keyboard = ikb({"🚨 Unmute 🚨": f"unmute_{user_id}"}) msg = ( f"**Muted User:** {mention}\n" f"**Muted By:** {message.from_user.mention if message.from_user else 'Anon'}\n" ) if message.command[0] == "tmute": split = reason.split(None, 1) time_value = split[0] temp_reason = split[1] if len(split) > 1 else "" temp_mute = await time_converter(message, time_value) msg += f"**Muted For:** {time_value}\n" if temp_reason: msg += f"**Reason:** {temp_reason}" try: if len(time_value[:-1]) < 3: await message.chat.restrict_member( user_id, permissions=ChatPermissions(), until_date=temp_mute, ) await message.reply_text(msg, reply_markup=keyboard) else: await message.reply_text("You can't use more than 99") except AttributeError: pass return if reason: msg += f"**Reason:** {reason}" await message.chat.restrict_member( user_id, permissions=ChatPermissions() ) await message.reply_text(msg, reply_markup=keyboard)
async def warn_user(_, message: Message): user_id, reason = await extract_user_and_reason(message) chat_id = message.chat.id if not user_id: return await message.reply_text("I can't find that user.") if user_id == BOT_ID: return await message.reply_text( "I can't warn myself, i can leave if you want." ) if user_id in SUDOERS: return await message.reply_text( "You Wanna Warn The Elevated One?, RECONSIDER!" ) if user_id in (await list_admins(chat_id)): return await message.reply_text( "I can't warn an admin, You know the rules, so do i." ) if user_id not in (await list_members(chat_id)): return await message.reply_text("This user isn't here.") user, warns = await asyncio.gather( app.get_users(user_id), get_warn(chat_id, await int_to_alpha(user_id)), ) mention = user.mention keyboard = ikb({"🚨 Remove Warn 🚨": f"unwarn_{user_id}"}) if warns: warns = warns["warns"] else: warns = 0 if message.command[0][0] == "d": await message.reply_to_message.delete() if warns >= 2: await message.chat.kick_member(user_id) await message.reply_text( f"Number of warns of {mention} exceeded, BANNED!" ) await remove_warns(chat_id, await int_to_alpha(user_id)) else: warn = {"warns": warns + 1} msg = f""" **Warned User:** {mention} **Warned By:** {message.from_user.mention if message.from_user else 'Anon'} **Reason:** {reason or 'No Reason Provided.'} **Warns:** {warns + 1}/3""" await message.reply_text(msg, reply_markup=keyboard) await add_warn(chat_id, await int_to_alpha(user_id), warn)
async def mute(_, message: Message): user_id, reason = await extract_user_and_reason(message) if not user_id: return await message.reply_text("I can't find that user.") if user_id == BOT_ID: return await message.reply_text("I can't mute myself.") if user_id in SUDOERS: return await message.reply_text( "You wanna mute the elevated one?, RECONSIDER!") if user_id in (await list_admins(message.chat.id)): return await message.reply_text( "I can't mute an admin, You know the rules, so do i.") await message.chat.restrict_member(user_id, permissions=ChatPermissions()) mention = (await app.get_users(user_id)).mention keyboard = ikb([[("🚨 Unmute 🚨", f"unmute_{user_id}")]]) msg = f""" **Muted User:** {mention} **Muted By:** {message.from_user.mention if message.from_user else 'Anon'} **Reason:** {reason or 'No Reason Provided.'}""" await message.reply_text(msg, reply_markup=keyboard)
async def task_inline_func(user_id): if user_id not in SUDOERS: return tasks = all_tasks() text = await _get_tasks_text() keyb = None if tasks: keyb = ikb( {i: f"cancel_task_{i}" for i in list(tasks.keys())}, row_width=4, ) return [ InlineQueryResultArticle( title="Tasks", reply_markup=keyb, input_message_content=InputTextMessageContent(text, ), ) ]