async def handler(event): # TODO: exempt admins from locks # check for "lock" "bots" if is_locked(event.chat_id, "bots"): # bots are limited Telegram accounts, # and cannot join by themselves if event.user_added: users_added_by = event.action_message.from_id is_ban_able = False rights = types.ChatBannedRights(until_date=None, view_messages=True) added_users = event.action_message.action.users for user_id in added_users: user_obj = await client.get_entity(user_id) if user_obj.bot: is_ban_able = True try: await client( functions.channels.EditBannedRequest( event.chat_id, user_obj, rights)) except Exception as e: await event.reply( "I don't seem to have ADMIN permission here. \n`{}`" .format(str(e))) update_lock(event.chat_id, "bots", False) break
async def handler(event): if event.fwd_from: return input_str = event.pattern_match.group(1) peer_id = event.chat_id if input_str in (("bots", "commands", "email", "forward", "url")): update_lock(peer_id, input_str, False) await event.edit("UnLocked {}".format(input_str)) else: await event.edit( "Use `.lock` without any parameters to unlock API locks")
async def check_incoming_messages(event): # TODO: exempt admins from locks peer_id = event.chat_id if is_locked(peer_id, "commands"): entities = event.message.entities is_command = False if entities: for entity in entities: if isinstance(entity, types.MessageEntityBotCommand): is_command = True if is_command: try: await event.delete() except Exception as e: await event.reply( "I don't seem to have ADMIN permission here. \n`{}`". format(str(e))) update_lock(peer_id, "commands", False) if is_locked(peer_id, "forward"): if event.fwd_from: try: await event.delete() except Exception as e: await event.reply( "I don't seem to have ADMIN permission here. \n`{}`". format(str(e))) update_lock(peer_id, "forward", False) if is_locked(peer_id, "email"): entities = event.message.entities is_email = False if entities: for entity in entities: if isinstance(entity, types.MessageEntityEmail): is_email = True if is_email: try: await event.delete() except Exception as e: await event.reply( "I don't seem to have ADMIN permission here. \n`{}`". format(str(e))) update_lock(peer_id, "email", False) if is_locked(peer_id, "url"): entities = event.message.entities is_url = False if entities: for entity in entities: if isinstance( entity, (types.MessageEntityTextUrl, types.MessageEntityUrl)): is_url = True if is_url: try: await event.delete() except Exception as e: await event.reply( "I don't seem to have ADMIN permission here. \n`{}`". format(str(e))) update_lock(peer_id, "url", False)
async def handler(event): # Space weirdness in regex required because argument is optional and other # commands start with ".lock" if event.fwd_from: return input_str = event.pattern_match.group("target") peer_id = event.chat_id if input_str in (("bots", "commands", "email", "forward", "url")): update_lock(peer_id, input_str, True) await event.edit("Locked {}".format(input_str)) else: msg = None media = None sticker = None gif = None gamee = None ainline = None gpoll = None adduser = None cpin = None changeinfo = None if input_str: if "msg" in input_str: msg = True if "media" in input_str: media = True if "sticker" in input_str: sticker = True if "gif" in input_str: gif = True if "gamee" in input_str: gamee = True if "ainline" in input_str: ainline = True if "gpoll" in input_str: gpoll = True if "adduser" in input_str: adduser = True if "cpin" in input_str: cpin = True if "changeinfo" in input_str: changeinfo = True banned_rights = types.ChatBannedRights( until_date=None, # view_messages=None, send_messages=msg, send_media=media, send_stickers=sticker, send_gifs=gif, send_games=gamee, send_inline=ainline, send_polls=gpoll, invite_users=adduser, pin_messages=cpin, change_info=changeinfo, ) try: result = await client( # pylint:disable=E0602 functions.messages.EditChatDefaultBannedRightsRequest( peer=peer_id, banned_rights=banned_rights)) except Exception as e: # pylint:disable=C0103,W0703 await event.edit(str(e)) else: await event.edit( "Current Chat Default Permissions Changed Successfully, in API" )