SoulofSukuna commited on
Commit
28ec631
·
verified ·
1 Parent(s): f56db70

Create code2.py

Browse files
Files changed (1) hide show
  1. code2.py +113 -0
code2.py ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ import logging
3
+ import os
4
+ import re
5
+ from datetime import datetime, timedelta
6
+
7
+ import pyrogram
8
+ from pyrogram import Client, filters
9
+ from pyrogram.enums import ChatMemberStatus
10
+ from pyrogram.types import ChatPermissions, InlineKeyboardButton, InlineKeyboardMarkup
11
+ from pyrogram.errors.exceptions.bad_request_400 import UserAdminInvalid
12
+
13
+ API_ID = 28810829
14
+ API_HASH = "d3f304bbd0b69b8c30dbec4be5824748"
15
+ BOT_TOKEN = os.environ["BOT_TOKEN"]
16
+
17
+ logging.basicConfig(
18
+ level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
19
+ )
20
+ logger = logging.getLogger("TruesAutoBlacklister")
21
+ logger.info("Logging has been set up.")
22
+
23
+ app = Client(
24
+ "TruesBlacklister",
25
+ api_id=int(API_ID), #Get API_ID from my.telegram.org
26
+ api_hash=API_HASH, #As above
27
+ bot_token=BOT_TOKEN, #Get bot_token from @botfather
28
+ )
29
+ logger.info("Initialized Pyrogram client 1")
30
+
31
+ # Define the list of blacklisted words
32
+ blacklist = ["counterfeit", "meth", "shard", "heroin", "gbh"]
33
+
34
+
35
+ @app.on_message(filters.text)
36
+ async def check_blacklist(client, message):
37
+ if any(
38
+ re.search(rf"\b{re.escape(word)}\b", message.text, re.IGNORECASE)
39
+ for word in blacklist
40
+ ):
41
+ logger.info("Message contains a blacklisted word.")
42
+
43
+ chat_member = await client.get_chat_member(
44
+ message.chat.id, message.from_user.id
45
+ )
46
+ logger.info(
47
+ f"User status: {chat_member.status}, user id: {chat_member.user.id}, username: @{chat_member.user.username}"
48
+ )
49
+
50
+ if chat_member.status not in [
51
+ ChatMemberStatus.ADMINISTRATOR,
52
+ ChatMemberStatus.OWNER,
53
+ ]:
54
+ try:
55
+ await message.delete()
56
+ logger.info("User is not an admin. Deleted the message.")
57
+ await client.restrict_chat_member(
58
+ chat_id=message.chat.id,
59
+ user_id=message.from_user.id,
60
+ permissions=ChatPermissions(can_send_messages=False),
61
+ )
62
+ except UserAdminInvalid as e:
63
+ logger.error("Failed to mute the user. Skipping action.")
64
+
65
+ buttons = [
66
+ [InlineKeyboardButton("Unmute", callback_data="unmute")],
67
+ [InlineKeyboardButton("Ban", callback_data="ban")],
68
+ ]
69
+ reply_markup = InlineKeyboardMarkup(buttons)
70
+ await client.send_message(
71
+ chat_id=message.chat.id,
72
+ text=f"@{message.from_user.username}, Your message has been deleted due to a blacklisted word. Please select an action:",
73
+ reply_to_message_id=message.id,
74
+ reply_markup=reply_markup,
75
+ )
76
+ else:
77
+ logger.info("User is an admin. Skipping action.")
78
+ else:
79
+ logger.info("Message does not contain a blacklisted word.")
80
+
81
+
82
+ @app.on_callback_query()
83
+ async def handle_button(client, callback_query):
84
+ try:
85
+ if callback_query.data == "unmute":
86
+ await client.restrict_chat_member(
87
+ chat_id=callback_query.message.chat.id,
88
+ user_id=callback_query.from_user.id,
89
+ permissions=ChatPermissions(can_send_messages=True),
90
+ )
91
+
92
+ await callback_query.message.edit_text(f"@{callback_query.from_user.username} has been unmuted.")
93
+ await asyncio.sleep(10) # Pause for 10 seconds
94
+ await callback_query.message.delete()
95
+
96
+ elif callback_query.data == "ban":
97
+ await client.ban_chat_member(
98
+ chat_id=callback_query.message.chat.id, user_id=callback_query.from_user.id
99
+ )
100
+
101
+ logger.info(f"@{callback_query.from_user.username} has banned themselves.")
102
+ await callback_query.message.edit_text(f"@{callback_query.from_user.username} has been banned.")
103
+ await asyncio.sleep(10) # Pause for 10 seconds
104
+ await callback_query.message.delete()
105
+
106
+ except UserAdminInvalid as e:
107
+ # logger.info(f"Caught UserAdminInvalid error: {e}")
108
+ await callback_query.answer("This button is not for you!")
109
+ except Exception as e:
110
+ logger.error(f"An error occurred: {e}")
111
+
112
+
113
+ app.run()