Spaces:
Sleeping
Sleeping
Create code2.py
Browse files
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()
|