Skip to content

Commit b2dba71

Browse files
fban module updated (#116)
* xiaomi plugin * Improved * Update fedutils.py --------- Co-authored-by: Abhi <85984486+AbhiTheModder@users.noreply.github.com>
1 parent ca8f81e commit b2dba71

File tree

1 file changed

+86
-25
lines changed

1 file changed

+86
-25
lines changed

utils/fedutils.py

Lines changed: 86 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,90 +22,147 @@
2222
from utils.scripts import format_exc
2323
from utils.misc import modules_help, prefix
2424

25+
2526
@Client.on_message(filters.command("fban", prefix) & filters.me)
2627
async def fban_cmd(client: Client, message: Message):
2728
try:
28-
msg = await message.edit("🌙 Starting Federation Ban...")
29+
msg = await message.edit("<b>🌙 Starting Federation Ban...</b>")
2930

30-
# Get target and reason
3131
args = message.text.split()
3232
if len(args) < 2 and not message.reply_to_message:
3333
return await msg.edit("❌ Reply to user or provide ID/username and reason")
3434

3535
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
3738
reason = " ".join(args[1:]) if len(args) > 1 else ""
3839
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 ""
4148

42-
# Get configuration
4349
fban_group = db.get("core.ats", "FBAN_GROUP_ID")
4450
fed_ids = db.get("core.ats", "FED_IDS", [])
45-
51+
4652
if not fban_group:
4753
return await msg.edit("❌ FBAN group not set! Use `.set_fban_group` first")
48-
54+
4955
if not fed_ids:
5056
return await msg.edit("❌ No federations added! Use `.addfed` first")
5157

52-
# Execute commands in FBAN group
5358
await client.send_message(fban_group, f"/fban {target} {reason}")
5459
await asyncio.sleep(2)
55-
60+
5661
for fed_id in fed_ids:
5762
await client.send_message(fban_group, f"/joinfed {fed_id}")
5863
await asyncio.sleep(3)
5964
await client.send_message(fban_group, f"/fban {target} {reason}")
6065
await asyncio.sleep(3)
6166

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)
6391

6492
except Exception as e:
6593
await msg.edit(f"⚠️ Error: {format_exc(e)}")
6694

95+
6796
@Client.on_message(filters.command("unfban", prefix) & filters.me)
6897
async def unfban_cmd(client: Client, message: Message):
6998
try:
70-
msg = await message.edit("🌙 Starting Federation Unban...")
99+
msg = await message.edit("<b>🌙 Starting Federation Unban...</b>")
71100

72-
# Get target and reason
73101
args = message.text.split()
74102
if len(args) < 2 and not message.reply_to_message:
75103
return await msg.edit("❌ Reply to user or provide ID/username and reason")
76-
104+
77105
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
79108
reason = " ".join(args[1:]) if len(args) > 1 else ""
80109
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 ""
83118

84-
# Get configuration
85119
fban_group = db.get("core.ats", "FBAN_GROUP_ID")
86120
fed_ids = db.get("core.ats", "FED_IDS", [])
87-
121+
88122
if not fban_group:
89123
return await msg.edit("❌ FBAN group not set! Use `.set_fban_group` first")
90-
124+
91125
if not fed_ids:
92126
return await msg.edit("❌ No federations added! Use `.addfed` first")
93127

94-
# Execute commands in FBAN group
95128
await client.send_message(fban_group, f"/unfban {target} {reason}")
96129
await asyncio.sleep(2)
97-
130+
98131
for fed_id in fed_ids:
99132
await client.send_message(fban_group, f"/joinfed {fed_id}")
100133
await asyncio.sleep(3)
101134
await client.send_message(fban_group, f"/unfban {target} {reason}")
102135
await asyncio.sleep(3)
103136

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)
105161

106162
except Exception as e:
107163
await msg.edit(f"⚠️ Error: {format_exc(e)}")
108164

165+
109166
@Client.on_message(filters.command("set_fban_group", prefix) & filters.me)
110167
async def set_fban_group(_, message: Message):
111168
if len(message.command) < 2:
@@ -120,6 +177,7 @@ async def set_fban_group(_, message: Message):
120177
except Exception as e:
121178
await message.edit(f"⚠️ Error: {format_exc(e)}")
122179

180+
123181
@Client.on_message(filters.command("addfed", prefix) & filters.me)
124182
async def add_fed(_, message: Message):
125183
if len(message.command) < 2:
@@ -135,6 +193,7 @@ async def add_fed(_, message: Message):
135193
db.set("core.ats", "FED_IDS", current_feds)
136194
await message.edit(f"✅ Added federation: `{fed_id}`")
137195

196+
138197
@Client.on_message(filters.command("delfed", prefix) & filters.me)
139198
async def del_fed(_, message: Message):
140199
if len(message.command) < 2:
@@ -150,14 +209,16 @@ async def del_fed(_, message: Message):
150209
db.set("core.ats", "FED_IDS", current_feds)
151210
await message.edit(f"✅ Removed federation: `{fed_id}`")
152211

212+
153213
@Client.on_message(filters.command("listfed", prefix) & filters.me)
154214
async def list_fed(_, message: Message):
155215
current_feds = db.get("core.ats", "FED_IDS", [])
156216
if not current_feds:
157217
return await message.edit("❌ No federations in list")
158218

159219
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+
161222

162223
modules_help["fedutils"] = {
163224
"fban [reply]/[userid]* [reason]": "Ban user in multiple federations",
@@ -166,4 +227,4 @@ async def list_fed(_, message: Message):
166227
"addfed [fed_id]*": "Add federation to ban list",
167228
"delfed [fed_id]*": "Remove federation from ban list",
168229
"listfed": "Show current federation list"
169-
}
230+
}

0 commit comments

Comments
 (0)