async def getfsr(e): res = get_forcesetting(e.chat_id) if not res: return await eor(e, "ForceSub is Not Active In This Chat !", time=5) cha = await e.client.get_entity(int(res)) await eor(e, f"**ForceSub Status** : `Active`\n- **{cha.title}** `({res})`")
async def force_sub(ult): if not udB.get_key("FORCESUB"): return user = await ult.get_sender() joinchat = get_forcesetting(ult.chat_id) if (not joinchat) or (isinstance(user, User) and user.bot): return if CACHE.get(ult.chat_id): if CACHE[ult.chat_id].get(user.id): CACHE[ult.chat_id].update( {user.id: CACHE[ult.chat_id][user.id] + 1}) else: CACHE[ult.chat_id].update({user.id: 1}) else: CACHE.update({ult.chat_id: {user.id: 1}}) count = CACHE[ult.chat_id][user.id] if count == 11: CACHE[ult.chat_id][user.id] = 1 return if count in range(2, 11): return try: await ultroid_bot.get_permissions(int(joinchat), user.id) return except UserNotParticipantError: pass if isinstance(user, Channel): try: await ultroid_bot.edit_permissions(ult.chat_id, user.id, view_messages=False) return except BaseException as er: LOGS.exception(er) try: await ultroid_bot.edit_permissions(ult.chat_id, user.id, send_messages=False) except ChatAdminRequiredError: return except Exception as e: await ult.delete() LOGS.info(e) res = await ultroid_bot.inline_query(asst.me.username, f"fsub {user.id}_{joinchat}") await res[0].click(ult.chat_id, reply_to=ult.id)
async def cacheahs(ult): if not udB.get("FORCESUB"): return user = await ult.get_sender() joinchat = get_forcesetting(ult.chat_id) if not joinchat or user.bot: return if CACHE.get(ult.chat_id): if CACHE[ult.chat_id].get(user.id): CACHE[ult.chat_id].update( {user.id: CACHE[ult.chat_id][user.id] + 1}) else: CACHE[ult.chat_id].update({user.id: 1}) else: CACHE.update({ult.chat_id: {user.id: 1}}) count = CACHE[ult.chat_id][user.id] if count == 11: CACHE[ult.chat_id][user.id].update(1) return if count in range(2, 11): return try: await ultroid_bot.get_permissions(int(joinchat), user.id) return except UserNotParticipantError: pass try: await ultroid_bot.edit_permissions(ult.chat_id, user.id, send_messages=False) except ChatAdminRequiredError: return except Exception as e: LOGS.info(e) res = await ultroid_bot.inline_query(asst.me.username, f"fsub {user.id}_{joinchat}") await res[0].click(ult.chat_id, reply_to=ult.id)
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)