BanBot / code.py
SoulofSukuna's picture
Update code.py
a0b1ae0 verified
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()