Ufoptg commited on
Commit
9513370
1 Parent(s): d6b34f9

Create code2.py

Browse files
Files changed (1) hide show
  1. code2.py +101 -0
code2.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ import logging
3
+ import os
4
+ import re
5
+ from datetime import datetime, timedelta
6
+
7
+ from telethon import TelegramClient, events
8
+ from telethon.tl.types import ChatAdminRights, ChatBannedRights
9
+
10
+ API_ID = ["API_ID"]
11
+ API_HASH = ["API_HASH"]
12
+ BOT_TOKEN = os.environ["BOT_TOKEN"]
13
+
14
+ logging.basicConfig(
15
+ level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
16
+ )
17
+ logger = logging.getLogger("TruesAutoBlacklister")
18
+ logger.info("Logging has been set up.")
19
+
20
+ client = TelegramClient("TruesBlacklister", API_ID, API_HASH).start(bot_token=BOT_TOKEN)
21
+ logger.info("Initialized Telethon client")
22
+
23
+ # Define the list of blacklisted words
24
+ blacklist = ["counterfeit", "meth", "shard", "heroin", "gbh"]
25
+
26
+ @client.on(events.NewMessage(pattern='/start'))
27
+ async def start(event):
28
+ await event.respond('I am alive!')
29
+
30
+ @client.on(events.NewMessage(pattern='/help'))
31
+ async def help(event):
32
+ await event.respond('I can blacklist certain words. Just type them in a chat I am in!')
33
+
34
+ @client.on(events.NewMessage(incoming=True))
35
+ async def check_blacklist(event):
36
+ if any(
37
+ re.search(rf"\b{re.escape(word)}\b", event.raw_text, re.IGNORECASE)
38
+ for word in blacklist
39
+ ):
40
+ logger.info("Message contains a blacklisted word.")
41
+
42
+ user = await event.get_sender()
43
+ if user:
44
+ logger.info(
45
+ f"User id: {user.id}, username: {user.username}"
46
+ )
47
+
48
+ if not await client.is_admin(event.chat_id, user.id):
49
+ try:
50
+ await event.delete()
51
+ logger.info("User is not an admin. Deleted the message.")
52
+ await client.edit_permissions(
53
+ entity=event.chat_id,
54
+ user_id=user.id,
55
+ view_messages=False
56
+ )
57
+ except Exception as e:
58
+ logger.error("Failed to mute the user. Skipping action.")
59
+
60
+ buttons = [
61
+ [InlineKeyboardButton("Unmute", callback_data="unmute")],
62
+ [InlineKeyboardButton("Ban", callback_data="ban")],
63
+ ]
64
+ await client.send_message(
65
+ entity=event.chat_id,
66
+ message=f"{user.username}, Your message has been deleted due to a blacklisted word. Please select an action:",
67
+ buttons=buttons
68
+ )
69
+ else:
70
+ logger.info("User is an admin. Skipping action.")
71
+ else:
72
+ logger.info("Message does not contain a blacklisted word.")
73
+
74
+ @client.on(events.CallbackQuery())
75
+ async def handle_button(event):
76
+ user = await event.get_sender()
77
+ try:
78
+ if event.data.decode("utf-8") == "unmute":
79
+ await client.edit_permissions(
80
+ entity=event.chat_id,
81
+ user_id=user.id,
82
+ view_messages=True
83
+ )
84
+ await event.respond(f"{user.username} has been unmuted.")
85
+ await asyncio.sleep(10) # Pause for 10 seconds
86
+ await event.delete()
87
+
88
+ elif event.data.decode("utf-8") == "ban":
89
+ await client.edit_permissions(
90
+ entity=event.chat_id,
91
+ user_id=user.id,
92
+ view_messages=False
93
+ )
94
+ await event.respond(f"{user.username} has been banned.")
95
+ await asyncio.sleep(10) # Pause for 10 seconds
96
+ await event.delete()
97
+
98
+ except Exception as e:
99
+ logger.error(f"An error occurred: {e}")
100
+
101
+ client.run_until_disconnected()