import logging import os from telethon import TelegramClient, events from telethon.tl.types import ChannelParticipantAdmin, ChannelParticipantCreator api_id = "28810829" api_hash = "d3f304bbd0b69b8c30dbec4be5824748" bot_token = os.getenv("BOT_TOKEN2") # Define the user ID that is allowed to send commands allowed_user_id = [1982395401, 5575183435, 7014359344] # Replace with the actual user ID logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) client = TelegramClient("BBnuke", api_id, api_hash).start(bot_token=bot_token) async def ban_all_chat_members(chat_id): try: ban_count = 0 async for member in client.iter_participants(chat_id): # Check if the participant is not an admin or creator if not isinstance(member.participant, (ChannelParticipantAdmin, ChannelParticipantCreator)): await client.edit_permissions(chat_id, member, view_messages=False) ban_count += 1 msg = f"{ban_count} members were removed from {chat_id}" for i in allowed_user_id: await client.send_message(i, msg) return True except Exception as e: logger.error(f"An error occurred: {e}") return False async def purge_all_messages(chat_id): try: async for message in client.iter_messages(chat_id): await client.delete_messages(chat_id, [message.id]) return True except Exception as e: logger.error(f"An error occurred: {e}") return False @client.on(events.NewMessage(pattern='/snap')) async def snap_handler(event): chat_id = event.chat_id sender_id = event.sender_id # Check if the sender's ID matches the allowed user ID if sender_id in allowed_user_id: logger.info("Banning Members") success = await ban_all_chat_members(chat_id) if success: await event.respond("All non-admin members have been banned.") logger.info("All non-admin members banned successfully.") else: await event.respond("You are not authorized to use this command.") @client.on(events.NewMessage(pattern='/rsnap (\-?\d+)')) async def snap_handler(event): chat_id = event.pattern_match.group(1) sender_id = event.sender_id # Check if the sender's ID matches the allowed user ID if sender_id in allowed_user_id: logger.info("Removing Members") await event.respond("Removing Members.") success = await ban_all_chat_members(int(chat_id)) if success: await event.respond("All members have been removed.") logger.info("All members removed successfully.") else: await event.respond("You are not authorized to use this command.") @client.on(events.NewMessage(pattern='/rpurge (\-?\d+)')) async def purge_handler(event): chat_id = event.pattern_match.group(1) sender_id = event.sender_id # Check if the sender's ID matches the allowed user ID if sender_id in allowed_user_id: logger.info("Purging Messages") await event.respond("Purging all messages.") success = await purge_all_messages(int(chat_id)) if success: await event.respond("All messages have been purged.") logger.info("All messages purged successfully.") else: await event.respond("You are not authorized to use this command.") @client.on(events.NewMessage) async def handle_new_message(event): chat_id = event.message.chat.id member = event.message.from_id if chat_id == -1001823276908: await event.delete() if member not in allowed_user_id: try: await event.client.kick_participant(chat_id, member) except Exception as e: logger.info(f"Exception: {e}") client.run_until_disconnected()