async def gstat_(e): xx = await eor(e, get_string("com_1")) if e.is_private: userid = (await e.get_chat()).id elif e.reply_to_msg_id: userid = (await e.get_reply_message()).sender_id elif e.pattern_match.group(1): try: userid = await get_user_id(e.pattern_match.group(1)) except Exception as err: return await eor(xx, f"{err}", time=10) else: return await eor(xx, "`Reply to some msg or add their id.`", time=5) name = (await e.client.get_entity(userid)).first_name msg = "**" + name + " is " is_banned = is_gbanned(userid) reason = list_gbanned().get(userid) if is_banned: msg += "Globally Banned" msg += f" with reason** `{reason}`" if reason else ".**" else: msg += "not Globally Banned.**" await xx.edit(msg)
async def _(event): match = event.pattern_match.group(1) if match: try: user = await event.client.parse_id(match) except Exception as er: return await event.eor(str(er)) elif event.is_reply: rpl = await event.get_reply_message() user = rpl.sender_id else: user = event.chat_id xx = await event.eor(get_string("com_1")) try: _ = await event.client.get_entity(user) except Exception as er: return await xx.edit(f"**ERROR :** {er}") if not isinstance(_, User): try: peer = get_peer_id(_) photo, capt = await get_chat_info(_, event) if is_gbanned(peer): capt += "\n•<b> Is Gbanned:</b> <code>True</code>" if not photo: return await xx.eor(capt, parse_mode="html") await event.client.send_message(event.chat_id, capt, file=photo, parse_mode="html") await xx.delete() except Exception as er: await event.eor("**ERROR ON CHATINFO**\n" + str(er)) return try: full_user = (await event.client(GetFullUserRequest(user))).full_user except Exception as er: return await xx.edit(f"ERROR : {er}") user = _ user_photos = (await event.client.get_profile_photos( user.id, limit=0)).total or "NaN" user_id = user.id first_name = html.escape(user.first_name) if first_name is not None: first_name = first_name.replace("\u2060", "") last_name = user.last_name last_name = (last_name.replace("\u2060", "") if last_name else ("Last Name not found")) user_bio = full_user.about if user_bio is not None: user_bio = html.escape(full_user.about) common_chats = full_user.common_chats_count if user.photo: dc_id = user.photo.dc_id else: dc_id = "Need a Profile Picture to check this" caption = """<b>Exᴛʀᴀᴄᴛᴇᴅ Dᴀᴛᴀʙᴀsᴇ Fʀᴏᴍ Tᴇʟᴇɢʀᴀᴍ's Dᴀᴛᴀʙᴀsᴇ<b> <b>••Tᴇʟᴇɢʀᴀᴍ ID</b>: <code>{}</code> <b>••Pᴇʀᴍᴀɴᴇɴᴛ Lɪɴᴋ</b>: <a href='tg://user?id={}'>Click Here</a> <b>••Fɪʀsᴛ Nᴀᴍᴇ</b>: <code>{}</code> <b>••Sᴇᴄᴏɴᴅ Nᴀᴍᴇ</b>: <code>{}</code> <b>••Bɪᴏ</b>: <code>{}</code> <b>••Dᴄ ID</b>: <code>{}</code> <b>••Nᴏ. Oғ PғPs</b> : <code>{}</code> <b>••Is Rᴇsᴛʀɪᴄᴛᴇᴅ</b>: <code>{}</code> <b>••Vᴇʀɪғɪᴇᴅ</b>: <code>{}</code> <b>••Is A Bᴏᴛ</b>: <code>{}</code> <b>••Gʀᴏᴜᴘs Iɴ Cᴏᴍᴍᴏɴ</b>: <code>{}</code> """.format( user_id, user_id, first_name, last_name, user_bio, dc_id, user_photos, user.restricted, user.verified, user.bot, common_chats, ) chk = is_gbanned(user_id) if chk: caption += f"""<b>••Gʟᴏʙᴀʟʟʏ Bᴀɴɴᴇᴅ</b>: <code>True</code> <b>••Rᴇᴀsᴏɴ</b>: <code>{chk}</code>""" else: caption += "<b>••Gʟᴏʙᴀʟʟʏ Bᴀɴɴᴇᴅ</b>: <code>False</code>" await event.client.send_message( event.chat_id, caption, reply_to=event.reply_to_msg_id, parse_mode="HTML", file=full_user.profile_photo, force_document=False, silent=True, ) await xx.delete()
async def _(e): xx = await eor(e, "`Gbanning...`") reason = "" if e.reply_to_msg_id: userid = (await e.get_reply_message()).sender_id try: reason = e.text.split(" ", maxsplit=1)[1] except IndexError: reason = "" elif e.pattern_match.group(1): usr = e.text.split(" ", maxsplit=2)[1] userid = await get_user_id(usr) try: reason = e.text.split(" ", maxsplit=2)[2] except IndexError: reason = "" elif e.is_private: userid = e.chat_id try: reason = e.text.split(" ", maxsplit=1)[1] except IndexError: reason = "" else: return await eor(xx, "`Reply to some msg or add their id.`", tome=5, time=5) try: name = (await e.client.get_entity(userid)).first_name except BaseException: userid = int(userid) name = str(userid) chats = 0 if userid == ultroid_bot.uid: return await eor(xx, "`I can't gban myself.`", time=3) if userid in DEVLIST: return await eor(xx, "`I can't gban my Developers.`", time=3) if is_gbanned(userid): return await eod( xx, "`User is already gbanned and added to gbanwatch.`", time=4, ) async for ggban in e.client.iter_dialogs(): if ggban.is_group or ggban.is_channel: try: await e.client.edit_permissions(ggban.id, userid, view_messages=False) chats += 1 except BaseException: pass gban(userid, reason) try: await e.client(BlockRequest(int(userid))) except BaseException: pass gb_msg = f"**#Gbanned** [{name}](tg://user?id={userid}) `in {chats} common chats and added to gbanwatch!`" if reason: gb_msg += f"\n**Reason** - {reason}" await xx.edit(gb_msg)
async def _(e): xx = await e.eor("`Gbanning...`") reason = "" if e.pattern_match.group(1): usr = e.text.split(" ", maxsplit=2)[1] try: userid = await e.client.parse_id(usr) except ValueError: userid = usr try: reason = e.text.split(" ", maxsplit=2)[2] except IndexError: pass elif e.reply_to_msg_id: userid = (await e.get_reply_message()).sender_id try: reason = e.text.split(" ", maxsplit=1)[1] except IndexError: pass elif e.is_private: userid = e.chat_id try: reason = e.text.split(" ", maxsplit=1)[1] except IndexError: pass else: return await xx.eor("`Reply to some msg or add their id.`", tome=5, time=5) user = None try: user = await e.client.get_entity(userid) name = inline_mention(user) except BaseException: userid = int(userid) name = str(userid) chats = 0 if userid == ultroid_bot.uid: return await xx.eor("`I can't gban myself.`", time=3) elif userid in DEVLIST: return await xx.eor("`I can't gban my Developers.`", time=3) elif is_gbanned(userid): return await eod( xx, "`User is already gbanned and added to gbanwatch.`", time=4, ) if e.client._dialogs: dialog = e.client._dialogs else: dialog = await e.client.get_dialogs() e.client._dialogs.extend(dialog) for ggban in dialog: if ggban.is_group or ggban.is_channel: try: await e.client.edit_permissions(ggban.id, userid, view_messages=False) chats += 1 except FloodWaitError as fw: LOGS.info( f"[FLOOD_WAIT_ERROR] : on GBAN Command\nSleeping for {fw.seconds+10}" ) await asyncio.sleep(fw.seconds + 10) try: await e.client.edit_permissions(ggban.id, userid, view_messages=False) chats += 1 except BaseException as er: LOGS.exception(er) except ChatAdminRequiredError: pass except BaseException as er: LOGS.exception(er) gban(userid, reason) if isinstance(user, User): await e.client(BlockRequest(int(userid))) gb_msg = f"**#Gbanned** {name} `in {chats} chats and added to gbanwatch!`" if reason: gb_msg += f"\n**Reason** : {reason}" await xx.edit(gb_msg)
async def _(e): xx = await e.eor("`UnGbanning...`") match = e.pattern_match.group(1) peer = None if match: try: userid = int(match) except ValueError: userid = match try: userid = (await e.client.get_entity(userid)).id except (ValueError, Exception) as er: return await xx.edit(f"Failed to get User...\nError: {er}") elif e.reply_to_msg_id: userid = (await e.get_reply_message()).sender_id elif e.is_private: userid = e.chat_id else: return await xx.eor("`Reply to some msg or add their id.`", time=5) if not is_gbanned(userid): return await xx.edit("`User/Channel is not Gbanned...`") try: if not peer: peer = await e.client.get_entity(userid) name = inline_mention(peer) except BaseException: userid = int(userid) name = str(userid) chats = 0 if e.client._dialogs: dialog = e.client._dialogs else: dialog = await e.client.get_dialogs() e.client._dialogs.extend(dialog) for ggban in dialog: if ggban.is_group or ggban.is_channel: try: await e.client.edit_permissions(ggban.id, userid, view_messages=True) chats += 1 except FloodWaitError as fw: LOGS.info( f"[FLOOD_WAIT_ERROR] : on Ungban\nSleeping for {fw.seconds+10}" ) await asyncio.sleep(fw.seconds + 10) try: await e.client.edit_permissions(ggban.id, userid, view_messages=True) chats += 1 except BaseException as er: LOGS.exception(er) except ChatAdminRequiredError: pass except BaseException as er: LOGS.exception(er) ungban(userid) if isinstance(peer, User): await e.client(UnblockRequest(int(userid))) await xx.edit( f"`Ungbaned` {name} in {chats} chats.\nRemoved from gbanwatch.`", )
async def DummyHandler(ult): # clean chat actions key = udB.get_key("CLEANCHAT") or [] if ult.chat_id in key: try: await ult.delete() except BaseException: pass # thank members if must_thank(ult.chat_id): chat_count = (await ult.client.get_participants(ult.chat_id, limit=0)).total if chat_count % 100 == 0: stik_id = chat_count / 100 - 1 sticker = stickers[stik_id] await ult.respond(file=sticker) # force subscribe if (udB.get_key("FORCESUB") and ((ult.user_joined or ult.user_added)) and get_forcesetting(ult.chat_id)): user = await ult.get_user() if not user.bot: joinchat = get_forcesetting(ult.chat_id) try: await ultroid_bot(GetParticipantRequest( int(joinchat), user.id)) except UserNotParticipantError: await ultroid_bot.edit_permissions(ult.chat_id, user.id, send_messages=False) res = await ultroid_bot.inline_query( asst.me.username, f"fsub {user.id}_{joinchat}") await res[0].click(ult.chat_id, reply_to=ult.action_message.id) if ult.user_joined or ult.added_by: user = await ult.get_user() chat = await ult.get_chat() # gbans and @UltroidBans checks if udB.get_key("ULTROID_BANS"): try: is_banned = await async_searcher( "https://bans.ultroid.tech/api/status", json={"userId": user.id}, post=True, re_json=True, ) if is_banned["is_banned"]: await ult.client.edit_permissions( chat.id, user.id, view_messages=False, ) await ult.client.send_message( chat.id, "**@UltroidBans:** Banned user detected and banned!\n`{}`.\nBan reason: {}" .format( str(is_banned), is_banned["reason"], ), ) except BaseException: pass reason = is_gbanned(user.id) if reason and chat.admin_rights: try: await ult.client.edit_permissions( chat.id, user.id, view_messages=False, ) gban_watch = get_string("can_1").format( inline_mention(user), reason) await ult.reply(gban_watch) except Exception as er: LOGS.exception(er) # greetings elif get_welcome(ult.chat_id): user = await ult.get_user() chat = await ult.get_chat() title = chat.title or "this chat" count = (chat.participants_count or (await ult.client.get_participants(chat, limit=0)).total) mention = inline_mention(user) name = user.first_name fullname = get_display_name(user) uu = user.username username = f"@{uu}" if uu else mention wel = get_welcome(ult.chat_id) msgg = wel["welcome"] med = wel["media"] or None userid = user.id msg = None if msgg: msg = msgg.format( mention=mention, group=title, count=count, name=name, fullname=fullname, username=username, userid=userid, ) if wel.get("button"): btn = create_tl_btn(wel["button"]) await something(ult, msg, med, btn) elif msg: send = await ult.reply( msg, file=med, ) await asyncio.sleep(150) await send.delete() else: await ult.reply(file=med) elif (ult.user_left or ult.user_kicked) and get_goodbye(ult.chat_id): user = await ult.get_user() chat = await ult.get_chat() title = chat.title or "this chat" count = (chat.participants_count or (await ult.client.get_participants(chat, limit=0)).total) mention = inline_mention(user) name = user.first_name fullname = get_display_name(user) uu = user.username username = f"@{uu}" if uu else mention wel = get_goodbye(ult.chat_id) msgg = wel["goodbye"] med = wel["media"] userid = user.id msg = None if msgg: msg = msgg.format( mention=mention, group=title, count=count, name=name, fullname=fullname, username=username, userid=userid, ) if wel.get("button"): btn = create_tl_btn(wel["button"]) await something(ult, msg, med, btn) elif msg: send = await ult.reply( msg, file=med, ) await asyncio.sleep(150) await send.delete() else: await ult.reply(file=med)
async def ChatActionsHandler(ult): # sourcery no-metrics # clean chat actions if is_clean_added(ult.chat_id): try: await ult.delete() except BaseException: pass # thank members if must_thank(ult.chat_id): chat_count = (await ult.client.get_participants(ult.chat_id, limit=0)).total if chat_count % 100 == 0: stik_id = chat_count / 100 - 1 sticker = stickers[stik_id] await ult.respond(file=sticker) # force subscribe if ( udB.get("FORCESUB") and ((ult.user_joined or ult.user_added)) and get_forcesetting(ult.chat_id) ): user = await ult.get_user() if not user.bot: joinchat = get_forcesetting(ult.chat_id) try: await ultroid_bot(GetParticipantRequest(int(joinchat), user.id)) except UserNotParticipantError: await ultroid_bot.edit_permissions( ult.chat_id, user.id, send_messages=False ) res = await ultroid_bot.inline_query( asst.me.username, f"fsub {user.id}_{joinchat}" ) await res[0].click(ult.chat_id, reply_to=ult.action_message.id) # gban checks if ult.user_joined or ult.added_by: user = await ult.get_user() chat = await ult.get_chat() reason = is_gbanned(user.id) if reason and chat.admin_rights: try: await ult.client.edit_permissions( chat.id, user.id, view_messages=False, ) gban_watch = get_string("can_1").format(inline_mention(user), reason) await ult.reply(gban_watch) except Exception as er: LOGS.exception(er) # greetings elif get_welcome(ult.chat_id): user = await ult.get_user() chat = await ult.get_chat() title = chat.title or "this chat" count = (await ult.client.get_participants(chat, limit=0)).total mention = inline_mention(user) name = user.first_name fullname = get_display_name(user) uu = user.username username = f"@{uu}" if uu else mention wel = get_welcome(ult.chat_id) msgg = wel["welcome"] med = wel["media"] or None userid = user.id msg = None if msgg: msg = msgg.format( mention=mention, group=title, count=count, name=name, fullname=fullname, username=username, userid=userid, ) if wel.get("button"): btn = create_tl_btn(wel["button"]) await something(ult, msg, med, btn) elif msg: send = await ult.reply( msg, file=med, ) await asyncio.sleep(150) await send.delete() else: await ult.reply(file=med) elif (ult.user_left or ult.user_kicked) and get_goodbye(ult.chat_id): user = await ult.get_user() chat = await ult.get_chat() title = chat.title or "this chat" count = (await ult.client.get_participants(chat, limit=0)).total mention = inline_mention(user) name = user.first_name fullname = get_display_name(user) uu = user.username username = f"@{uu}" if uu else mention wel = get_goodbye(ult.chat_id) msgg = wel["goodbye"] med = wel["media"] userid = user.id msg = None if msgg: msg = msgg.format( mention=mention, group=title, count=count, name=name, fullname=fullname, username=username, userid=userid, ) if wel.get("button"): btn = create_tl_btn(wel["button"]) await something(ult, msg, med, btn) elif msg: send = await ult.reply( msg, file=med, ) await asyncio.sleep(150) await send.delete() else: await ult.reply(file=med)
async def _(event): xx = await eor(event, get_string("com_1")) replied_user, error_i_a = await get_full_user(event) if replied_user is None: await xx.edit("Please reply to a user.\nError - " + str(error_i_a)) return False replied_user_profile_photos = await event.client( GetUserPhotosRequest( user_id=replied_user.user.id, offset=42, max_id=0, limit=80, ), ) replied_user_profile_photos_count = "NaN" try: replied_user_profile_photos_count = replied_user_profile_photos.count except AttributeError: pass user_id = replied_user.user.id first_name = html.escape(replied_user.user.first_name) if first_name is not None: first_name = first_name.replace("\u2060", "") last_name = replied_user.user.last_name last_name = ( last_name.replace("\u2060", "") if last_name else ("Last Name not found") ) user_bio = replied_user.about if user_bio is not None: user_bio = html.escape(replied_user.about) common_chats = replied_user.common_chats_count try: dc_id, location = get_input_location(replied_user.profile_photo) except Exception as e: dc_id = "Need a Profile Picture to check this" str(e) caption = """<b>Exᴛʀᴀᴄᴛᴇᴅ Dᴀᴛᴀʙᴀsᴇ Fʀᴏᴍ Tᴇʟᴇɢʀᴀᴍ's Dᴀᴛᴀʙᴀsᴇ<b> <b>••Tᴇʟᴇɢʀᴀᴍ ID</b>: <code>{}</code> <b>••Pᴇʀᴍᴀɴᴇɴᴛ Lɪɴᴋ</b>: <a href='tg://user?id={}'>Click Here</a> <b>••Fɪʀsᴛ Nᴀᴍᴇ</b>: <code>{}</code> <b>••Sᴇᴄᴏɴᴅ Nᴀᴍᴇ</b>: <code>{}</code> <b>••Bɪᴏ</b>: <code>{}</code> <b>••Dᴄ ID</b>: <code>{}</code> <b>••Nᴏ. Oғ PғPs</b> : <code>{}</code> <b>••Is Rᴇsᴛʀɪᴄᴛᴇᴅ</b>: <code>{}</code> <b>••Vᴇʀɪғɪᴇᴅ</b>: <code>{}</code> <b>••Is A Bᴏᴛ</b>: <code>{}</code> <b>••Gʀᴏᴜᴘs Iɴ Cᴏᴍᴍᴏɴ</b>: <code>{}</code> """.format( user_id, user_id, first_name, last_name, user_bio, dc_id, replied_user_profile_photos_count, replied_user.user.restricted, replied_user.user.verified, replied_user.user.bot, common_chats, ) chk = is_gbanned(user_id) if chk: caption += f"""<b>••Gʟᴏʙᴀʟʟʏ Bᴀɴɴᴇᴅ</b>: <code>True</code> <b>••Rᴇᴀsᴏɴ</b>: <code>{chk}</code>""" else: caption += "<b>••Gʟᴏʙᴀʟʟʏ Bᴀɴɴᴇᴅ</b>: <code>False</code>" await event.client.send_message( event.chat_id, caption, reply_to=event.reply_to_msg_id, parse_mode="HTML", file=replied_user.profile_photo, force_document=False, silent=True, ) await xx.delete()