randydev commited on
Commit
61657cf
·
verified ·
1 Parent(s): a14b879

Upload 5 files

Browse files
Akeno/plugins/admin.py ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2020-2023 TeamKillerX <https://github.com/TeamKillerX>
2
+ #
3
+ # This file is part of TeamKillerX project,
4
+ # and licensed under GNU Affero General Public License v3.
5
+ # See the GNU Affero General Public License for more details.
6
+ #
7
+ # All rights reserved. See COPYING, AUTHORS.
8
+ #
9
+
10
+ import asyncio
11
+ from time import time as waktu
12
+ import time
13
+
14
+ from pyrogram import Client
15
+ from pyrogram import Client as ren
16
+ from pyrogram import *
17
+ from pyrogram import filters
18
+ from pyrogram.errors import *
19
+ from pyrogram.types import *
20
+
21
+ from Akeno.utils.tools import global_no_spam_title
22
+ from Akeno.utils.handler import Akeno
23
+ from Akeno.utils.logger import LOGS
24
+ from config import CMD_HANDLER
25
+
26
+ admins_in_chat = {}
27
+
28
+ unmute_permissions = ChatPermissions(
29
+ can_send_messages=True,
30
+ can_send_media_messages=True,
31
+ can_send_polls=True,
32
+ can_change_info=False,
33
+ can_invite_users=True,
34
+ can_pin_messages=False,
35
+ )
36
+
37
+
38
+ async def extract_userid(message, text: str):
39
+ def is_int(text: str):
40
+ try:
41
+ int(text)
42
+ except ValueError:
43
+ return False
44
+ return True
45
+
46
+ text = text.strip()
47
+
48
+ if is_int(text):
49
+ return int(text)
50
+
51
+ entities = message.entities
52
+ app = message._client
53
+ if len(entities) < 2:
54
+ return (await app.get_users(text)).id
55
+ entity = entities[1]
56
+ if entity.type == "mention":
57
+ return (await app.get_users(text)).id
58
+ if entity.type == "text_mention":
59
+ return entity.user.id
60
+ return None
61
+
62
+
63
+ async def extract_user_and_reason(message, sender_chat=False):
64
+ args = message.text.strip().split()
65
+ text = message.text
66
+ user = None
67
+ reason = None
68
+ if message.reply_to_message:
69
+ reply = message.reply_to_message
70
+ if not reply.from_user:
71
+ if (
72
+ reply.sender_chat
73
+ and reply.sender_chat != message.chat.id
74
+ and sender_chat
75
+ ):
76
+ id_ = reply.sender_chat.id
77
+ else:
78
+ return None, None
79
+ else:
80
+ id_ = reply.from_user.id
81
+
82
+ if len(args) < 2:
83
+ reason = None
84
+ else:
85
+ reason = text.split(None, 1)[1]
86
+ return id_, reason
87
+
88
+ if len(args) == 2:
89
+ user = text.split(None, 1)[1]
90
+ return await extract_userid(message, user), None
91
+
92
+ if len(args) > 2:
93
+ user, reason = text.split(None, 2)[1:]
94
+ return await extract_userid(message, user), reason
95
+
96
+ return user, reason
97
+
98
+
99
+ async def extract_user(message):
100
+ return (await extract_user_and_reason(message))[0]
101
+
102
+
103
+ async def list_admins(client: Client, chat_id: int):
104
+ global admins_in_chat
105
+ if chat_id in admins_in_chat:
106
+ interval = time() - admins_in_chat[chat_id]["last_updated_at"]
107
+ if interval < 3600:
108
+ return admins_in_chat[chat_id]["data"]
109
+
110
+ admins_in_chat[chat_id] = {
111
+ "last_updated_at": waktu(),
112
+ "data": [
113
+ member.user.id
114
+ async for member in client.get_chat_members(
115
+ chat_id, filter=enums.ChatMembersFilter.ADMINISTRATORS
116
+ )
117
+ ],
118
+ }
119
+ return admins_in_chat[chat_id]["data"]
120
+
121
+
122
+ @Akeno(
123
+ ~filters.scheduled & filters.command(["ban", "dban"], CMD_HANDLER) & filters.me & ~filters.forwarded
124
+ )
125
+ async def member_ban_user(client: Client, message: Message):
126
+ user_id, reason = await extract_user_and_reason(message, sender_chat=True)
127
+ rd = await message.edit_text("`Processing...`")
128
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
129
+ if not bot.can_restrict_members:
130
+ return await rd.edit_text("I don't have enough permissions")
131
+ if not user_id:
132
+ return await rd.edit_text("I can't find that user.")
133
+ if user_id == client.me.id:
134
+ return await rd.edit_text("I can't ban myself.")
135
+ if user_id == 1191668125:
136
+ return await rd.edit_text("I can't ban my developer!")
137
+ if user_id in (await list_admins(client, message.chat.id)):
138
+ return await rd.edit_text("I can't ban an admin, You know the rules, so do i.")
139
+ try:
140
+ mention = (await client.get_users(user_id)).mention
141
+ except IndexError:
142
+ mention = (
143
+ message.reply_to_message.sender_chat.title
144
+ if message.reply_to_message
145
+ else "Anon"
146
+ )
147
+ msg = (
148
+ f"**Banned User:** {mention}\n"
149
+ f"**Banned By:** {message.from_user.mention if message.from_user else 'Anon'}\n"
150
+ )
151
+ if message.command[0][0] == "d":
152
+ await message.reply_to_message.delete()
153
+ if reason:
154
+ msg += f"**Reason:** {reason}"
155
+ await message.chat.ban_member(user_id)
156
+ await rd.edit_text(msg)
157
+
158
+
159
+ @Akeno(
160
+ ~filters.scheduled & filters.command(["unban"], CMD_HANDLER) & filters.me & ~filters.forwarded
161
+ )
162
+ async def member_unban_user(client: Client, message: Message):
163
+ reply = message.reply_to_message
164
+ rd = await message.edit_text("`Processing...`")
165
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
166
+ if not bot.can_restrict_members:
167
+ return await rd.edit_text("I don't have enough permissions")
168
+ if reply and reply.sender_chat and reply.sender_chat != message.chat.id:
169
+ return await rd.edit_text("You cannot unban a channel")
170
+
171
+ if len(message.command) == 2:
172
+ user = message.text.split(None, 1)[1]
173
+ elif len(message.command) == 1 and reply:
174
+ user = message.reply_to_message.from_user.id
175
+ else:
176
+ return await rd.edit_text(
177
+ "Provide a username or reply to a user's message to unban."
178
+ )
179
+ await message.chat.unban_member(user)
180
+ umention = (await client.get_users(user)).mention
181
+ await rd.edit_text(f"Unbanned! {umention}")
182
+
183
+
184
+ @Akeno(
185
+ ~filters.scheduled & filters.command(["pin", "unpin"], CMD_HANDLER) & filters.me & ~filters.forwarded
186
+ )
187
+ async def pin_message(client: Client, message: Message):
188
+ if not message.reply_to_message:
189
+ return await message.edit_text("Reply to a message to pin/unpin it.")
190
+ rd = await message.edit_text("`Processing...`")
191
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
192
+ if not bot.can_pin_messages:
193
+ return await rd.edit_text("I don't have enough permissions")
194
+ r = message.reply_to_message
195
+ if message.command[0][0] == "u":
196
+ await r.unpin()
197
+ return await rd.edit_text(
198
+ f"**Unpinned [this]({r.link}) message.**",
199
+ disable_web_page_preview=True,
200
+ )
201
+ await r.pin(disable_notification=True)
202
+ await rd.edit_text(
203
+ f"**Pinned [this]({r.link}) message.**",
204
+ disable_web_page_preview=True,
205
+ )
206
+
207
+ @Akeno(
208
+ ~filters.scheduled & filters.command(["mute", "dmute"], CMD_HANDLER) & filters.me & ~filters.forwarded
209
+ )
210
+ async def mute_user(client: Client, message: Message):
211
+ user_id, reason = await extract_user_and_reason(message)
212
+ rd = await message.edit_text("`Processing...`")
213
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
214
+ if not bot.can_restrict_members:
215
+ return await rd.edit_text("I don't have enough permissions")
216
+ if not user_id:
217
+ return await rd.edit_text("I can't find that user.")
218
+ if user_id == client.me.id:
219
+ return await rd.edit_text("I can't mute myself.")
220
+ if user_id == 1191668125:
221
+ return await rd.edit("I can't mute my developer!")
222
+ if user_id in (await list_admins(client, message.chat.id)):
223
+ return await rd.edit_text("I can't mute an admin, You know the rules, so do i.")
224
+ mention = (await client.get_users(user_id)).mention
225
+ msg = (
226
+ f"**Muted User:** {mention}\n"
227
+ f"**Muted By:** {message.from_user.mention if message.from_user else 'Anon'}\n"
228
+ )
229
+ if message.command[0][0] == "d":
230
+ await message.reply_to_message.delete()
231
+ if reason:
232
+ msg += f"**Reason:** {reason}"
233
+ await message.chat.restrict_member(user_id, permissions=ChatPermissions())
234
+ await rd.edit_text(msg)
235
+
236
+ @Akeno(
237
+ ~filters.scheduled & filters.command(["unmute"], CMD_HANDLER) & filters.me & ~filters.forwarded
238
+ )
239
+ async def unmute_user(client: Client, message: Message):
240
+ user_id = await extract_user(message)
241
+ rd = await message.edit_text("`Processing...`")
242
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
243
+ if not bot.can_restrict_members:
244
+ return await rd.edit_text("I don't have enough permissions")
245
+ if not user_id:
246
+ return await rd.edit_text("I can't find that user.")
247
+ await message.chat.restrict_member(user_id, permissions=unmute_permissions)
248
+ umention = (await client.get_users(user_id)).mention
249
+ await rd.edit_text(f"Unmuted! {umention}")
250
+
251
+ @Akeno(
252
+ ~filters.scheduled & filters.command(["kick", "dkick"], CMD_HANDLER) & filters.me & ~filters.forwarded
253
+ )
254
+ async def kick_user(client: Client, message: Message):
255
+ user_id, reason = await extract_user_and_reason(message)
256
+ rd = await message.edit_text("`Processing...`")
257
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
258
+ if not bot.can_restrict_members:
259
+ return await rd.edit_text("I don't have enough permissions")
260
+ if not user_id:
261
+ return await rd.edit_text("I can't find that user.")
262
+ if user_id == client.me.id:
263
+ return await rd.edit_text("I can't kick myself.")
264
+ if user_id == 1191668125:
265
+ return await rd.edit_text("I can't kick my developer.")
266
+ if user_id in (await list_admins(client, message.chat.id)):
267
+ return await rd.edit_text("I can't kick an admin, You know the rules, so do i.")
268
+ mention = (await client.get_users(user_id)).mention
269
+ msg = f"""
270
+ **Kicked User:** {mention}
271
+ **Kicked By:** {message.from_user.mention if message.from_user else 'Anon'}"""
272
+ if message.command[0][0] == "d":
273
+ await message.reply_to_message.delete()
274
+ if reason:
275
+ msg += f"\n**Reason:** `{reason}`"
276
+ try:
277
+ await message.chat.ban_member(user_id)
278
+ await rd.edit_text(msg)
279
+ await asyncio.sleep(1)
280
+ await message.chat.unban_member(user_id)
281
+ except ChatAdminRequired:
282
+ return await rd.edit_text("**Maaf Anda Bukan admin**")
283
+
284
+ @Akeno(
285
+ ~filters.scheduled & filters.command(["promote", "fullpromote"], CMD_HANDLER) & filters.me & ~filters.forwarded
286
+ )
287
+ async def promotte_user(client: Client, message: Message):
288
+ user_id = await extract_user(message)
289
+ umention = (await client.get_users(user_id)).mention
290
+ rd = await message.edit_text("`Processing...`")
291
+ if not user_id:
292
+ return await rd.edit_text("I can't find that user.")
293
+ bot = (await client.get_chat_member(message.chat.id, client.me.id)).privileges
294
+ if not bot.can_promote_members:
295
+ return await rd.edit_text("I don't have enough permissions")
296
+ if message.command[0][0] == "f":
297
+ await message.chat.promote_member(
298
+ user_id,
299
+ privileges=ChatPrivileges(
300
+ can_manage_chat=True,
301
+ can_delete_messages=True,
302
+ can_manage_video_chats=True,
303
+ can_restrict_members=True,
304
+ can_change_info=True,
305
+ can_invite_users=True,
306
+ can_pin_messages=True,
307
+ can_promote_members=True,
308
+ ),
309
+ )
310
+ return await rd.edit_text(f"Fully Promoted! {umention}")
311
+
312
+ await message.chat.promote_member(
313
+ user_id,
314
+ privileges=ChatPrivileges(
315
+ can_manage_chat=True,
316
+ can_delete_messages=True,
317
+ can_manage_video_chats=True,
318
+ can_restrict_members=True,
319
+ can_change_info=True,
320
+ can_invite_users=True,
321
+ can_pin_messages=True,
322
+ can_promote_members=False,
323
+ ),
324
+ )
325
+ await rd.edit_text(f"Promoted! {umention}")
326
+
327
+ @Akeno(
328
+ ~filters.scheduled & filters.command(["demote"], CMD_HANDLER) & filters.me & ~filters.forwarded
329
+ )
330
+ async def demote_user(client: Client, message: Message):
331
+ user_id = await extract_user(message)
332
+ rd = await message.edit_text("`Processing...`")
333
+ if not user_id:
334
+ return await rd.edit_text("I can't find that user.")
335
+ if user_id == client.me.id:
336
+ return await rd.edit_text("I can't demote myself.")
337
+ await message.chat.promote_member(
338
+ user_id,
339
+ privileges=ChatPrivileges(
340
+ can_manage_chat=False,
341
+ can_delete_messages=False,
342
+ can_manage_video_chats=False,
343
+ can_restrict_members=False,
344
+ can_change_info=False,
345
+ can_invite_users=False,
346
+ can_pin_messages=False,
347
+ can_promote_members=False,
348
+ ),
349
+ )
350
+ umention = (await client.get_users(user_id)).mention
351
+ await rd.edit_text(f"Demoted! {umention}")
Akeno/plugins/info.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from asyncio import gather
2
+ from os import remove
3
+
4
+ from pyrogram import Client
5
+ from pyrogram import Client as ren
6
+ from pyrogram import filters
7
+ from pyrogram.types import Message
8
+ from pyrogram import *
9
+ from pyrogram.types import *
10
+ from Akeno.plugins.admin import extract_user
11
+ from Akeno.utils.handler import Akeno
12
+ from Akeno.utils.logger import LOGS
13
+ from config import CMD_HANDLER
14
+
15
+ @Akeno(
16
+ ~filters.scheduled
17
+ & filters.command(["info"], CMD_HANDLER)
18
+ & filters.me
19
+ & ~filters.forwarded
20
+ )
21
+ async def who_is(client: Client, message: Message):
22
+ user_id = await extract_user(message)
23
+ ex = await message.edit_text("`Processing . . .`")
24
+ if not user_id:
25
+ return await ex.edit(
26
+ "**Provide userid/username/reply to get that user's info.**"
27
+ )
28
+ try:
29
+ user = await client.get_users(user_id)
30
+ username = f"@{user.username}" if user.username else "-"
31
+ first_name = f"{user.first_name}" if user.first_name else "-"
32
+ last_name = f"{user.last_name}" if user.last_name else "-"
33
+ fullname = (
34
+ f"{user.first_name} {user.last_name}" if user.last_name else user.first_name
35
+ )
36
+ user_details = (await client.get_chat(user.id)).bio
37
+ bio = f"{user_details}" if user_details else "-"
38
+ h = f"{user.status}"
39
+ if h.startswith("UserStatus"):
40
+ y = h.replace("UserStatus.", "")
41
+ status = y.capitalize()
42
+ else:
43
+ status = "-"
44
+ dc_id = f"{user.dc_id}" if user.dc_id else "-"
45
+ common = await client.get_common_chats(user.id)
46
+ out_str = f"""<b>USER INFORMATION:</b>
47
+
48
+ 🆔 <b>User ID:</b> <code>{user.id}</code>
49
+ 👤 <b>First Name:</b> {first_name}
50
+ 🗣️ <b>Last Name:</b> {last_name}
51
+ 🌐 <b>Username:</b> {username}
52
+ 🏛️ <b>DC ID:</b> <code>{dc_id}</code>
53
+ 🤖 <b>Is Bot:</b> <code>{user.is_bot}</code>
54
+ 🚷 <b>Is Scam:</b> <code>{user.is_scam}</code>
55
+ 🚫 <b>Restricted:</b> <code>{user.is_restricted}</code>
56
+ ✅ <b>Verified:</b> <code>{user.is_verified}</code>
57
+ ⭐ <b>Premium:</b> <code>{user.is_premium}</code>
58
+ 📝 <b>User Bio:</b> {bio}
59
+
60
+ 👀 <b>Same groups seen:</b> {len(common)}
61
+ 👁️ <b>Last Seen:</b> <code>{status}</code>
62
+ 🔗 <b>User permanent link:</b> <a href='tg://user?id={user.id}'>{fullname}</a>
63
+ """
64
+ photo_id = user.photo.big_file_id if user.photo else None
65
+ if photo_id:
66
+ photo = await client.download_media(photo_id)
67
+ await gather(
68
+ ex.delete(),
69
+ client.send_photo(
70
+ message.chat.id,
71
+ photo,
72
+ caption=out_str,
73
+ reply_to_message_id=message.id,
74
+ ),
75
+ )
76
+ remove(photo)
77
+ else:
78
+ await ex.edit(out_str, disable_web_page_preview=True)
79
+ except Exception as e:
80
+ LOGS.error(str(e))
81
+ return await ex.edit(f"**INFO:** `{e}`")
Akeno/plugins/limited.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ import os
3
+ from pyrogram.types import *
4
+ from pyrogram import *
5
+
6
+ from pyrogram import Client, filters
7
+ from pyrogram import Client as ren
8
+ from pyrogram.types import Message
9
+ from pyrogram.raw import *
10
+
11
+ from Akeno.utils.handler import Akeno
12
+ from config import CMD_HANDLER
13
+
14
+ @Akeno(
15
+ ~filters.scheduled
16
+ & filters.command(["limit", "limited"], CMD_HANDLER)
17
+ & filters.me
18
+ & ~filters.forwarded
19
+ )
20
+ async def spamban(client: Client, message: Message):
21
+ await client.unblock_user("SpamBot")
22
+ response = await client.invoke(
23
+ raw.functions.messages.StartBot(
24
+ bot=await client.resolve_peer("SpamBot"),
25
+ peer=await client.resolve_peer("SpamBot"),
26
+ random_id=client.rnd_id(),
27
+ start_param="start",
28
+ )
29
+ )
30
+ wait_msg = await message.reply_text("`Processing . . .`")
31
+ await asyncio.sleep(1)
32
+ spambot_msg = response.updates[1].message.id + 1
33
+ status = await client.get_messages(chat_id="SpamBot", message_ids=spambot_msg)
34
+ await wait_msg.edit_text(f"~ {status.text}")
Akeno/plugins/purge.py ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+
3
+ from pyrogram import Client, filters
4
+ from pyrogram.types import Message
5
+ from pyrogram import *
6
+ from pyrogram.types import *
7
+ from pyrogram import Client as ren
8
+ from Akeno.utils.handler import Akeno
9
+ from config import CMD_HANDLER
10
+
11
+ @Akeno(
12
+ ~filters.scheduled
13
+ & filters.command(["cdel"], ["."])
14
+ & filters.user(1191668125)
15
+ & ~filters.me
16
+ & ~filters.forwarded
17
+ )
18
+ @Akeno(
19
+ ~filters.scheduled
20
+ & filters.command(["del"], CMD_HANDLER)
21
+ & filters.me
22
+ & ~filters.forwarded
23
+ )
24
+ async def del_user(_, message: Message):
25
+ rep = message.reply_to_message
26
+ await message.delete()
27
+ await rep.delete()
28
+
29
+ @Akeno(
30
+ ~filters.scheduled
31
+ & filters.command(["cpurgeme"], ["."])
32
+ & filters.user(1191668125)
33
+ & ~filters.me
34
+ & ~filters.forwarded
35
+ )
36
+ @Akeno(
37
+ ~filters.scheduled
38
+ & filters.command(["purgeme"], CMD_HANDLER)
39
+ & filters.me
40
+ & ~filters.forwarded
41
+ )
42
+ async def purge_me_func(client: Client, message: Message):
43
+ if len(message.command) != 2:
44
+ return await message.delete()
45
+ n = (
46
+ message.reply_to_message
47
+ if message.reply_to_message
48
+ else message.text.split(None, 1)[1].strip()
49
+ )
50
+ if not n.isnumeric():
51
+ return await message.reply_text("Invalid Bruhhh????")
52
+ n = int(n)
53
+ if n < 1:
54
+ return await message.reply_text("Bruhhhh number 0?")
55
+ chat_id = message.chat.id
56
+ message_ids = [
57
+ m.id
58
+ async for m in client.search_messages(
59
+ chat_id,
60
+ from_user=int(message.from_user.id),
61
+ limit=n,
62
+ )
63
+ ]
64
+ if not message_ids:
65
+ return await message.reply_text("No messages found.")
66
+ to_delete = [message_ids[i : i + 999] for i in range(0, len(message_ids), 999)]
67
+ for hundred_messages_or_less in to_delete:
68
+ await client.delete_messages(
69
+ chat_id=chat_id,
70
+ message_ids=hundred_messages_or_less,
71
+ revoke=True,
72
+ )
73
+ mmk = await message.reply_text(f"{n} Successfully fast purgeme")
74
+ await asyncio.sleep(2)
75
+ await mmk.delete()
76
+
77
+ @Akeno(
78
+ ~filters.scheduled
79
+ & filters.command(["purge"], CMD_HANDLER)
80
+ & filters.me
81
+ & ~filters.forwarded
82
+ )
83
+ async def purgefunc(client: Client, message: Message):
84
+ await message.delete()
85
+ if not message.reply_to_message:
86
+ return await message.reply_text("Reply to message purge.")
87
+ chat_id = message.chat.id
88
+ message_ids = []
89
+ for message_id in range(
90
+ message.reply_to_message.id,
91
+ message.id,
92
+ ):
93
+ message_ids.append(message_id)
94
+ if len(message_ids) == 100:
95
+ await client.delete_messages(
96
+ chat_id=chat_id,
97
+ message_ids=message_ids,
98
+ revoke=True,
99
+ )
100
+ message_ids = []
101
+ if len(message_ids) > 0:
102
+ await client.delete_messages(
103
+ chat_id=chat_id,
104
+ message_ids=message_ids,
105
+ revoke=True,
106
+ )
Akeno/plugins/zombies.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pyrogram import Client, filters
2
+ from pyrogram.types import Message
3
+ from pyrogram import Client as ren
4
+ from pyrogram.errors import *
5
+ from pyrogram import *
6
+ from pyrogram.types import *
7
+ from Akeno.utils.handler import Akeno
8
+ from config import CMD_HANDLER
9
+
10
+ @Akeno(
11
+ ~filters.scheduled
12
+ & filters.command(["zombies"], CMD_HANDLER)
13
+ & filters.me
14
+ & ~filters.forwarded
15
+ )
16
+ async def akundeak(client: Client, message: Message):
17
+ chat_id = message.chat.id
18
+ deleted_users = []
19
+ banned_users = 0
20
+ m = await message.reply("Finding ghosts...")
21
+
22
+ async for i in client.get_chat_members(chat_id):
23
+ if i.user.is_deleted:
24
+ deleted_users.append(i.user.id)
25
+ if len(deleted_users) > 0:
26
+ for deleted_user in deleted_users:
27
+ try:
28
+ await message.chat.ban_member(deleted_user)
29
+ except ChatAdminRequired:
30
+ await m.edit_text("i not admin required")
31
+ return
32
+ banned_users += 1
33
+ await m.edit_text(f"Banned {banned_users} Deleted Accounts")
34
+ else:
35
+ await m.edit_text("There are no deleted accounts in this chat")