async def unrestrict_usr(c: TelePyroBot, m: Message): await m.edit("`Trying to Unrestrict user...`") is_admin = await admin_check(c, m) if not is_admin: return return user_id, user_first_name = await extract_user(c, m) try: await m.chat.unban_member(user_id) if str(user_id).lower().startswith("@"): await m.edit(f"**UnRestricted** {user_first_name}") await c.send_message( PRIVATE_GROUP_ID, f"#UNRESTRICT\nUnrestricted {user_first_name} in chat {m.chat.title}", ) else: await m.edit( "**UnRestricted** {}".format(mention_markdown(user_first_name, user_id)) ) await c.send_message( PRIVATE_GROUP_ID, "#UNRESTRICT\nUnrestricted {} in chat {}".format( mention_markdown(user_first_name, user_id), m.chat.title ), ) except Exception as ef: await m.edit(f"**Error:**\n\n`{ef}`")
async def demote_usr(c: TelePyroBot, m: Message): await m.edit("`Trying to Demote user...`") is_admin = await admin_check(c, m) if not is_admin: return return user_id, user_first_name = await extract_user(c, m) try: await m.chat.promote_member( user_id=user_id, can_change_info=False, can_delete_messages=False, can_restrict_members=False, can_invite_users=False, can_pin_messages=False, ) await asyncio.sleep(2) if str(user_id).lower().startswith("@"): await m.edit(f"**Demoted** {user_first_name}") await c.send_message( PRIVATE_GROUP_ID, f"#DEMOTE\nDemoted {user_first_name} in chat {m.chat.title}", ) else: await m.edit( "**Demoted** {}".format(mention_markdown(user_first_name, user_id)) ) await c.send_message( PRIVATE_GROUP_ID, "#DEMOTE\nDemoted {} in chat {}".format( mention_markdown(user_first_name, user_id), m.chat.title ), ) except Exception as ef: await m.edit(f"**Error:**\n\n`{ef}`")
async def ban_usr(c: TelePyroBot, m: Message): await m.edit("`Trying to Ban user...`") is_admin = await admin_check(c, m) if not is_admin: return user_id, user_first_name = await extract_user(c, m) if m.reply_to_message: await c.delete_messages(m.chat.id, m.reply_to_message.message_id) try: await m.chat.kick_member(user_id=user_id) if str(user_id).lower().startswith("@"): await m.edit(f"**Banned** {user_first_name}") await c.send_message( PRIVATE_GROUP_ID, f"#BAN\nBanned {user_first_name} in chat {m.chat.title}", ) else: await m.edit( "**Banned** {}".format(mention_markdown(user_first_name, user_id)) ) await c.send_message( PRIVATE_GROUP_ID, "#BAN\nBanned {} in chat {}".format( mention_markdown(user_first_name, user_id), m.chat.title ), ) except Exception as ef: await m.edit(f"**Error:**\n\n`{ef}`")
async def restrict_usr(c: TelePyroBot, m: Message): await m.edit("`Trying to Mute user...`") is_admin = await admin_check(c, m) chat_id = m.chat.id if not is_admin: await m.edit("`I'm not admin nub nibba!`") await asyncio.sleep(2) await m.delete() return user_id, user_first_name = await extract_user(c, m) try: await m.chat.restrict_member(user_id=user_id, permisssions=ChatPermissions()) if str(user_id).lower().startswith("@"): await m.edit(f"**Muted** {user_first_name}") await c.send_message( PRIVATE_GROUP_ID, f"#MUTE\nMuted {user_first_name} in chat {m.chat.title}", ) else: await m.edit( "**Muted** {}".format(mention_markdown(user_first_name, user_id)) ) await c.send_message( PRIVATE_GROUP_ID, "#MUTE\nMuted {} in chat {}".format( mention_markdown(user_first_name, user_id), m.chat.title ), ) except Exception as ef: await m.edit(f"**Error:**\n\n`{ef}`")
async def listbots(c: TelePyroBot, m: Message): if len(m.text.split()) >= 2: chat = m.text.split(None, 1)[1] grup = await c.get_chat(chat) else: chat = m.chat.id grup = await c.get_chat(chat) getbots = c.iter_chat_members(chat) bots = [] async for a in getbots: try: nama = a.user.first_name + " " + a.user.last_name except: nama = a.user.first_name if nama is None: nama = "☠️ Deleted account" if a.user.is_bot: bots.append(mention_markdown(nama, a.user.id)) teks = f"**All bots in group {grup.title}**\n" teks += "Bots\n" for x in bots: teks += f"│ • {x}\n" teks += f"Total {len(bots)} Bots" await m.reply_text(teks, reply_to_message_id=ReplyCheck(m), parse_mode="md") await m.delete() return
async def listbots(c: TelePyroBot, m: Message): replyid = None if len(m.text.split()) >= 2: chat = m.text.split(None, 1)[1] grup = await c.get_chat(chat) else: chat = m.chat.id grup = await c.get_chat(chat) if m.reply_to_message: replyid = m.reply_to_message.message_id getbots = c.iter_chat_members(chat) bots = [] async for a in getbots: try: nama = a.user.first_name + " " + a.user.last_name except BaseException: nama = a.user.first_name if nama is None: nama = "☠️ Deleted account" if a.user.is_bot: bots.append(mention_markdown(nama, a.user.id)) teks = "**All bots in group {}**\n".format(grup.title) teks += "Bots\n" for x in bots: teks += "│ • {}\n".format(x) teks += "Total {} Bots".format(len(bots)) if replyid: await c.send_message(m.chat.id, teks, reply_to_message_id=replyid, parse_mode="md") else: await m.edit(teks, parse_mode="md")
async def revoke_pm_block(c: TelePyroBot, m: Message): if m.chat.type == "private": user_id = m.chat.id else: user_id = m.text.split()[1] db.del_whitelist(user_id) user = await c.get_users(user_id) await m.edit_text("__**PM permission was revoked for**__ {}".format( mention_markdown(user.first_name, user_id))) user_id = m.chat.id await c.send_message( PRIVATE_GROUP_ID, "{}'s **permission to contact you in PM has been revoked!**".format( mention_markdown(user.first_name, user_id)), ) await asyncio.sleep(5) await m.delete()
async def approve_pm(c: TelePyroBot, m: Message): if m.chat.type == "private": user_id = m.chat.id else: user_id, user_first_name = extract_user(message) db.set_whitelist(user_id, True) user = await c.get_users(user_id) await m.edit_text("**__PM permission was approved__** for {}".format( mention_markdown(user.first_name, user_id))) if db.get_msg_id(m.chat.id): old_msg_id = db.get_msg_id(m.chat.id) await c.delete_messages(chat_id=m.chat.id, message_ids=old_msg_id) await c.send_message( PRIVATE_GROUP_ID, "{} **is approved to contact you in PM!**".format( mention_markdown(user.first_name, user_id)), ) await asyncio.sleep(5) await m.delete()
async def afk(c: TelePyroBot, m: Message): if PRIVATE_GROUP_ID is None: await m.edit( "<b><i>Please set the variable</b></i> `PRIVATE_GROUP_ID` for this to function." ) return global afk_start afk_time = None afk_end = {} start_1 = datetime.now() afk_start = start_1.replace(microsecond=0) if len(m.text.split()) >= 2: await m.edit_text("I am going AFK now...\nBecause of {}".format( m.text.split(None, 1)[1])) await c.send_message( PRIVATE_GROUP_ID, "You are AFK!\nBecause of {}".format(m.text.split(None, 1)[1]), ) await asyncio.sleep(2) await m.delete() await asyncio.sleep(2) set_afk(True, m.text.split(None, 1)[1]) else: await m.edit_text("{} is now AFK!".format( mention_markdown(m.from_user.first_name, m.from_user.id))) await c.send_message( PRIVATE_GROUP_ID, "{} is now AFK!".format( mention_markdown(m.from_user.first_name, m.from_user.id)), ) await asyncio.sleep(2) await m.delete() await asyncio.sleep(2) set_afk(True, "") return
async def mention(c: TelePyroBot, m: Message): args = m.text.split(" ", 2) if len(args) == 3: name = args[1] if isinstance(args[2], int): user = args[2] rep = "{}".format(mention_markdown(name, user)) else: user = args[2] rep = f'<a href="tg://resolve?domain={name}">{user}</a>' await m.edit(rep, disable_web_page_preview=True, parse_mode="html") else: await m.edit( f"Check `{COMMAND_HAND_LER}help {__PLUGIN__}` for infor on how to use", parse_mode="md", ) return
async def start_gmute(c: TelePyroBot, m: Message): await m.edit_text("`Putting duct tape...`") user_id, user_first_name = await extract_user(m) if db.is_gmuted(user_id): await m.edit_text("`This user is already gmuted!`") return try: db.gmute(user_id) except Exception as e: await m.edit_text(f"<b>Error:</b>\n\n{str(e)}") else: await m.edit_text("`Successfully gmuted that person`") await c.send_message( PRIVATE_GROUP_ID, "#GMUTE\nUser: {} in Chat {}".format( mention_markdown(user_first_name, user_id), m.chat.title), ) return
async def pm_block(c: TelePyroBot, m: Message): if not PM_PERMIT: return try: if not db.get_whitelist(m.chat.id): if db.get_msg_id(m.chat.id): old_msg_id = db.get_msg_id(m.chat.id) await c.delete_messages(chat_id=m.chat.id, message_ids=old_msg_id) rply_msg = await m.reply_text(welc_txt) db.set_last_msg_id(m.chat.id, rply_msg.message_id) await asyncio.sleep(2) await c.send_message( PRIVATE_GROUP_ID, "{} **wants to contact you in PM**".format( mention_markdown(m.from_user.first_name, m.from_user.id)), ) return except Exception as ef: print("Error!\n\n", ef) return
async def adminlist(c: TelePyroBot, m: Message): toolong = False if len(m.text.split()) >= 2: chat = m.text.split(None, 1)[1] grup = await c.get_chat(chat) else: chat = m.chat.id grup = await c.get_chat(chat) alladmins = c.iter_chat_members(chat, filter="administrators") creator = [] admin = [] badmin = [] async for a in alladmins: try: nama = a.user.first_name + " " + a.user.last_name except: nama = a.user.first_name if nama is None: nama = "☠️ Deleted account" if a.status == "administrator": if a.user.is_bot: badmin.append(mention_markdown(nama, a.user.id)) else: admin.append(mention_markdown(nama, a.user.id)) elif a.status == "creator": creator.append(mention_markdown(nama, a.user.id)) admin.sort() badmin.sort() totaladmins = len(creator) + len(admin) + len(badmin) teks = f"**Admins in {grup.title}**\n" teks += "「 Creator 」\n" for x in creator: teks += f"│ • {x}\n" if len(teks) >= MAX_MESSAGE_LENGTH: await m.reply_text(m.chat.id, teks, reply_to_message_id=ReplyCheck(m), parse_mode="md") teks = "" toolong = True teks += f"「 {len(admin)} Human Administrator 」\n" for x in admin: teks += f"│ • {x}\n" if len(teks) >= MAX_MESSAGE_LENGTH: await m.reply_text(m.chat.id, teks, reply_to_message_id=ReplyCheck(m), parse_mode="md") teks = "" toolong = True teks += f"「 {len(badmin)} Bot Administrator 」\n" for x in badmin: teks += f"│ • {x}\n" if len(teks) >= MAX_MESSAGE_LENGTH: await m.reply_text(m.chat.id, teks, reply_to_message_id=ReplyCheck(m), parse_mode="md") teks = "" toolong = True teks += f"「 Total {totaladmins} Admins 」" if toolong: await m.delete() else: await m.edit_text(teks, parse_mode="md") return
async def adminlist(c: TelePyroBot, m: Message): replyid = None toolong = False if len(m.text.split()) >= 2: chat = m.text.split(None, 1)[1] grup = await c.get_chat(chat) else: chat = m.chat.id grup = await c.get_chat(chat) if m.reply_to_message: replyid = m.reply_to_message.message_id alladmins = c.iter_chat_members(chat, filter="administrators") creator = [] admin = [] badmin = [] async for a in alladmins: try: nama = a.user.first_name + " " + a.user.last_name except BaseException: nama = a.user.first_name if nama is None: nama = "☠️ Deleted account" if a.status == "administrator": if a.user.is_bot: badmin.append(mention_markdown(nama, a.user.id)) else: admin.append(mention_markdown(nama, a.user.id)) elif a.status == "creator": creator.append(mention_markdown(nama, a.user.id)) admin.sort() badmin.sort() totaladmins = len(creator) + len(admin) + len(badmin) teks = "**Admins in {}**\n".format(grup.title) teks += "「 Creator 」\n" for x in creator: teks += "│ • {}\n".format(x) if len(teks) >= 4096: await m.reply_text(m.chat.id, teks, reply_to_message_id=replyid, parse_mode="md") teks = "" toolong = True teks += "「 {} Human Administrator 」\n".format(len(admin)) for x in admin: teks += "│ • {}\n".format(x) if len(teks) >= 4096: await m.reply_text(m.chat.id, teks, reply_to_message_id=replyid, parse_mode="md") teks = "" toolong = True teks += "「 {} Bot Administrator 」\n".format(len(badmin)) for x in badmin: teks += "│ • {}\n".format(x) if len(teks) >= 4096: await m.reply_text(m.chat.id, teks, reply_to_message_id=replyid, parse_mode="md") teks = "" toolong = True teks += "「 Total {} Admins 」".format(totaladmins) if toolong: await m.reply_text(m.chat.id, teks, reply_to_message_id=replyid, parse_mode="md") else: await m.edit(teks, parse_mode="md")
async def afk_mentioned(c: TelePyroBot, m: Message): global MENTIONED global afk_time global afk_start global afk_end get = get_afk() if get and get["afk"]: current_time_afk = datetime.now() afk_end = current_time_afk.replace(microsecond=0) if afk_start != {}: total_afk_time = str((afk_end - afk_start)) afk_since = "**a while ago**" if afk_time: now = datetime.datetime.now() datime_since_afk = now - afk_time time_of_akf = float(datime_since_afk.seconds) days = time_of_akf // (24 * 3600) time_of_akf = time_of_akf % (24 * 3600) hours = time_of_akf // 3600 time_of_akf %= 3600 minutes = time_of_akf // 60 time_of_akf %= 60 seconds = time_of_akf if days == 1: afk_since = "**Yesterday**" elif days > 1: if days > 6: date = now + datetime.timedelta( days=-days, hours=-hours, minutes=-minutes ) afk_since = date.strftime("%A, %Y %B %m, %H:%I") else: wday = now + datetime.timedelta(days=-days) afk_since = wday.strftime("%A") elif hours > 1: afk_since = f"`{int(hours)}h{int(minutes)}m` **ago**" elif minutes > 0: afk_since = f"`{int(minutes)}m{int(seconds)}s` **ago**" else: afk_since = f"`{int(seconds)}s` **ago**" if "-" in str(m.chat.id): cid = str(m.chat.id)[4:] else: cid = str(m.chat.id) if cid in list(AFK_RESTIRECT) and int(AFK_RESTIRECT[cid]) >= int(time.time()): return AFK_RESTIRECT[cid] = int(time.time()) + DELAY_TIME if get["reason"]: if total_afk_time: await m.reply_text( "Sorry, My Master {} is AFK right now!\nReason: {}\n\nAFK Since:{}".format( mention_markdown(OWNER_NAME, OWNER_ID), get["reason"], total_afk_time, ) ) else: await m.reply_text( "Sorry, My Master {} is AFK right now!\nReason: {}".format( mention_markdown(OWNER_NAME, OWNER_ID), get["reason"] ) ) else: if total_afk_time: await m.reply_text( "Sorry, My Master {} is AFK right now!\n\nAFK Since:{}".format( mention_markdown(OWNER_NAME, OWNER_ID), total_afk_time ) ) else: await m.reply_text( "Sorry, My Master {} is AFK right now!".format( mention_markdown(OWNER_NAME, OWNER_ID) ) ) _, message_type = get_message_type(m) if message_type == Types.TEXT: text = m.text if m.text else m.caption else: text = message_type.name MENTIONED.append( { "user": m.from_user.first_name, "user_id": m.from_user.id, "chat": m.chat.title, "chat_id": cid, "text": text, "message_id": m.message_id, "time": datetime.now(), } ) await c.send_message( PRIVATE_GROUP_ID, "{}({}) mentioned you in {}({})\nText:\n`{}`\n\nTotal count: `{}`".format( mention_markdown(m.from_user.first_name, m.from_user.id), m.from_user.id, m.chat.title, m.chat.id, text[:3500], len(MENTIONED), ), ) await m.stop_propagation()