22
22
from utils .scripts import format_exc
23
23
from utils .misc import modules_help , prefix
24
24
25
+
25
26
@Client .on_message (filters .command ("fban" , prefix ) & filters .me )
26
27
async def fban_cmd (client : Client , message : Message ):
27
28
try :
28
- msg = await message .edit ("🌙 Starting Federation Ban..." )
29
+ msg = await message .edit ("<b> 🌙 Starting Federation Ban...</b> " )
29
30
30
- # Get target and reason
31
31
args = message .text .split ()
32
32
if len (args ) < 2 and not message .reply_to_message :
33
33
return await msg .edit ("❌ Reply to user or provide ID/username and reason" )
34
34
35
35
if message .reply_to_message :
36
- target = message .reply_to_message .from_user .id
36
+ target_user = message .reply_to_message .from_user
37
+ target = target_user .id
37
38
reason = " " .join (args [1 :]) if len (args ) > 1 else ""
38
39
else :
39
- target = args [1 ]
40
- reason = " " .join (args [2 :]) if len (args ) > 2 else ""
40
+ try :
41
+ target_user = await client .get_users (args [1 ])
42
+ target = target_user .id
43
+ reason = " " .join (args [2 :]) if len (args ) > 2 else ""
44
+ except Exception :
45
+ target = args [1 ]
46
+ target_user = None
47
+ reason = " " .join (args [2 :]) if len (args ) > 2 else ""
41
48
42
- # Get configuration
43
49
fban_group = db .get ("core.ats" , "FBAN_GROUP_ID" )
44
50
fed_ids = db .get ("core.ats" , "FED_IDS" , [])
45
-
51
+
46
52
if not fban_group :
47
53
return await msg .edit ("❌ FBAN group not set! Use `.set_fban_group` first" )
48
-
54
+
49
55
if not fed_ids :
50
56
return await msg .edit ("❌ No federations added! Use `.addfed` first" )
51
57
52
- # Execute commands in FBAN group
53
58
await client .send_message (fban_group , f"/fban { target } { reason } " )
54
59
await asyncio .sleep (2 )
55
-
60
+
56
61
for fed_id in fed_ids :
57
62
await client .send_message (fban_group , f"/joinfed { fed_id } " )
58
63
await asyncio .sleep (3 )
59
64
await client .send_message (fban_group , f"/fban { target } { reason } " )
60
65
await asyncio .sleep (3 )
61
66
62
- await msg .edit (f"✅ Successfully FBanned { target } in { len (fed_ids )} federations\n #MoonUB" )
67
+ # Fetch user info for mention
68
+ try :
69
+ if not target_user :
70
+ target_user = await client .get_users (target )
71
+
72
+ user_name = target_user .first_name
73
+ if target_user .last_name :
74
+ user_name += f" { target_user .last_name } "
75
+ user_mention = f"<a href='tg://user?id={ target_user .id } '>{ user_name } </a>"
76
+ user_id_display = str (target_user .id )
77
+ except Exception :
78
+ user_mention = str (target )
79
+ user_id_display = str (target )
80
+
81
+ result_message = (
82
+ f"<b>New FedBan</b>\n "
83
+ f"<b>Fed:</b> Fbanned in { len (fed_ids )} feds\n "
84
+ f"<b>User:</b> { user_mention } \n "
85
+ f"<b>User ID:</b> { user_id_display } \n "
86
+ f"<b>Reason:</b> { reason if reason else 'Not specified' } \n "
87
+ f"#MoonUB"
88
+ )
89
+
90
+ await msg .edit (result_message , disable_web_page_preview = True )
63
91
64
92
except Exception as e :
65
93
await msg .edit (f"⚠️ Error: { format_exc (e )} " )
66
94
95
+
67
96
@Client .on_message (filters .command ("unfban" , prefix ) & filters .me )
68
97
async def unfban_cmd (client : Client , message : Message ):
69
98
try :
70
- msg = await message .edit ("🌙 Starting Federation Unban..." )
99
+ msg = await message .edit ("<b> 🌙 Starting Federation Unban...</b> " )
71
100
72
- # Get target and reason
73
101
args = message .text .split ()
74
102
if len (args ) < 2 and not message .reply_to_message :
75
103
return await msg .edit ("❌ Reply to user or provide ID/username and reason" )
76
-
104
+
77
105
if message .reply_to_message :
78
- target = message .reply_to_message .from_user .id
106
+ target_user = message .reply_to_message .from_user
107
+ target = target_user .id
79
108
reason = " " .join (args [1 :]) if len (args ) > 1 else ""
80
109
else :
81
- target = args [1 ]
82
- reason = " " .join (args [2 :]) if len (args ) > 2 else ""
110
+ try :
111
+ target_user = await client .get_users (args [1 ])
112
+ target = target_user .id
113
+ reason = " " .join (args [2 :]) if len (args ) > 2 else ""
114
+ except Exception :
115
+ target = args [1 ]
116
+ target_user = None
117
+ reason = " " .join (args [2 :]) if len (args ) > 2 else ""
83
118
84
- # Get configuration
85
119
fban_group = db .get ("core.ats" , "FBAN_GROUP_ID" )
86
120
fed_ids = db .get ("core.ats" , "FED_IDS" , [])
87
-
121
+
88
122
if not fban_group :
89
123
return await msg .edit ("❌ FBAN group not set! Use `.set_fban_group` first" )
90
-
124
+
91
125
if not fed_ids :
92
126
return await msg .edit ("❌ No federations added! Use `.addfed` first" )
93
127
94
- # Execute commands in FBAN group
95
128
await client .send_message (fban_group , f"/unfban { target } { reason } " )
96
129
await asyncio .sleep (2 )
97
-
130
+
98
131
for fed_id in fed_ids :
99
132
await client .send_message (fban_group , f"/joinfed { fed_id } " )
100
133
await asyncio .sleep (3 )
101
134
await client .send_message (fban_group , f"/unfban { target } { reason } " )
102
135
await asyncio .sleep (3 )
103
136
104
- await msg .edit (f"✅ Successfully UnFBanned { target } in { len (fed_ids )} federations\n #MoonUB" )
137
+ # Fetch user info for mention
138
+ try :
139
+ if not target_user :
140
+ target_user = await client .get_users (target )
141
+
142
+ user_name = target_user .first_name
143
+ if target_user .last_name :
144
+ user_name += f" { target_user .last_name } "
145
+ user_mention = f"<a href='tg://user?id={ target_user .id } '>{ user_name } </a>"
146
+ user_id_display = str (target_user .id )
147
+ except Exception :
148
+ user_mention = str (target )
149
+ user_id_display = str (target )
150
+
151
+ result_message = (
152
+ f"<b>New FedUnban</b>\n "
153
+ f"<b>Fed:</b> Unbanned in { len (fed_ids )} feds\n "
154
+ f"<b>User:</b> { user_mention } \n "
155
+ f"<b>User ID:</b> { user_id_display } \n "
156
+ f"<b>Reason:</b> { reason if reason else 'Not specified' } \n "
157
+ f"#MoonUB"
158
+ )
159
+
160
+ await msg .edit (result_message , disable_web_page_preview = True )
105
161
106
162
except Exception as e :
107
163
await msg .edit (f"⚠️ Error: { format_exc (e )} " )
108
164
165
+
109
166
@Client .on_message (filters .command ("set_fban_group" , prefix ) & filters .me )
110
167
async def set_fban_group (_ , message : Message ):
111
168
if len (message .command ) < 2 :
@@ -120,6 +177,7 @@ async def set_fban_group(_, message: Message):
120
177
except Exception as e :
121
178
await message .edit (f"⚠️ Error: { format_exc (e )} " )
122
179
180
+
123
181
@Client .on_message (filters .command ("addfed" , prefix ) & filters .me )
124
182
async def add_fed (_ , message : Message ):
125
183
if len (message .command ) < 2 :
@@ -135,6 +193,7 @@ async def add_fed(_, message: Message):
135
193
db .set ("core.ats" , "FED_IDS" , current_feds )
136
194
await message .edit (f"✅ Added federation: `{ fed_id } `" )
137
195
196
+
138
197
@Client .on_message (filters .command ("delfed" , prefix ) & filters .me )
139
198
async def del_fed (_ , message : Message ):
140
199
if len (message .command ) < 2 :
@@ -150,14 +209,16 @@ async def del_fed(_, message: Message):
150
209
db .set ("core.ats" , "FED_IDS" , current_feds )
151
210
await message .edit (f"✅ Removed federation: `{ fed_id } `" )
152
211
212
+
153
213
@Client .on_message (filters .command ("listfed" , prefix ) & filters .me )
154
214
async def list_fed (_ , message : Message ):
155
215
current_feds = db .get ("core.ats" , "FED_IDS" , [])
156
216
if not current_feds :
157
217
return await message .edit ("❌ No federations in list" )
158
218
159
219
fed_list = "\n " .join ([f"• `{ fed } `" for fed in current_feds ])
160
- await message .edit (f"📜 Federation List:\n { fed_list } " )
220
+ await message .edit (f"<b>📜 Federation List:</b>\n { fed_list } " )
221
+
161
222
162
223
modules_help ["fedutils" ] = {
163
224
"fban [reply]/[userid]* [reason]" : "Ban user in multiple federations" ,
@@ -166,4 +227,4 @@ async def list_fed(_, message: Message):
166
227
"addfed [fed_id]*" : "Add federation to ban list" ,
167
228
"delfed [fed_id]*" : "Remove federation from ban list" ,
168
229
"listfed" : "Show current federation list"
169
- }
230
+ }
0 commit comments