-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpurge.py
More file actions
72 lines (65 loc) · 2.55 KB
/
purge.py
File metadata and controls
72 lines (65 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from .. import loader, utils
import logging
import telethon
logger = logging.getLogger(__name__)
@loader.tds
class PurgeMod(loader.Module):
"""Delete your messages\nRemade with love by @Art3sius"""
strings = {'name': 'Purge',
'not_reply': '<i>You should reply to a message</i>'}
@loader.sudo
@loader.ratelimit
async def purgecmd(self, message):
"""Purge from the replied message from [entities]\n.purge [*entities=[]]"""
if not message.is_reply:
await message.delete()
return
from_users = set()
args = utils.get_args(message)
for arg in args:
try:
entity = await message.client.get_entity(arg)
if isinstance(entity, telethon.tl.types.User):
from_users.add(entity.id)
except ValueError:
pass
msgs = []
async for msg in message.client.iter_messages(
entity=utils.get_chat_id(message),
min_id=message.reply_to_msg_id - 1,
reverse=True):
if from_users and msg.from_id not in from_users:
continue
msgs.append(msg.id)
if len(msgs) >= 99:
await message.client.delete_messages(message.to_id, msgs)
msgs.clear()
if msgs:
await message.client.delete_messages(message.to_id, msgs)
@loader.sudo
@loader.ratelimit
async def delcmd(self, message):
"""Delete last [n] messages or after the replied one\n.del [n=1]"""
msgs = [message.id]
args = utils.get_args(message)
count = int(args[0]) if args != [] and args[0].isdigit() else 1
if not message.is_reply:
async for msg in message.client.iter_messages(
entity=utils.get_chat_id(message),
limit=count+1):
msgs.append(msg.id)
if len(msgs) >= 99:
await message.client.delete_messages(message.to_id, msgs)
msgs.clear()
else:
async for msg in message.client.iter_messages(
entity=utils.get_chat_id(message),
limit=count,
min_id=message.reply_to_msg_id - 1,
reverse=True):
msgs.append(msg.id)
if len(msgs) >= 99:
await message.client.delete_messages(message.to_id, msgs)
msgs.clear()
if msgs:
await message.client.delete_messages(message.to_id, msgs)