-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrevoke.py
More file actions
146 lines (137 loc) Β· 11.1 KB
/
Copy pathrevoke.py
File metadata and controls
146 lines (137 loc) Β· 11.1 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
lllllllllllllll, llllllllllllllI, lllllllllllllIl, lllllllllllllII, llllllllllllIll, llllllllllllIlI, llllllllllllIIl = input, __name__, Exception, open, KeyboardInterrupt, print, hasattr
from os.path import exists as IIIllIIIIIIIII
from json import dump as IIIllIlllIIIIl, load as IlIlIlIllIlIII
from telethon import TelegramClient as lIIIIIlllIllIl, events as IIllIlIIlIlIIl
from datetime import datetime as IllllllIIllIII
lIllIIlIIllllIIlIl = 'config.json'
llIlIlIIlllllIllIl = 'deleted.txt'
lIIlIIllIlIIlllIlI = '\nβββββββββββ βββ ββββββ ββββββ βββ\nβββββββββββ βββ βββββββββββββββββββ\nββββββ βββ βββ βββ ββββββ ββββββ \nββββββ βββ βββ βββ ββββββ ββββββ \nβββ βββββββββββββββββββββ βββββββ βββ\nβββ ββββββββ βββββββ βββ ββββββ βββ\nWelcome to DEV FLUXX ANTI-REVOKE SCRIPT\n'
IIllllIlIIIIlIIIIl = {}
def lllIIlIIllIIIIIIII():
if not IIIllIIIIIIIII(llIlIlIIlllllIllIl):
with lllllllllllllII(llIlIlIIlllllIllIl, 'w') as lIIIlIlIllIIllIIlI:
lIIIlIlIllIIllIIlI.write('Deleted Messages Log\n')
lIIIlIlIllIIllIIlI.write('=' * 50 + '\n')
def llllIllIIlIIIIllll(lIIlIIIlIIIIlIlllI, lIIllllIIlIIIlllll, IllIlIllIlIllIIIlI):
lllIlIlIIllIIIlIIl = {'api_id': lIIlIIIlIIIIlIlllI, 'api_hash': lIIllllIIlIIIlllll, 'group': IllIlIllIlIllIIIlI}
with lllllllllllllII(lIllIIlIIllllIIlIl, 'w') as lIIIlIlIllIIllIIlI:
IIIllIlllIIIIl(lllIlIlIIllIIIlIIl, lIIIlIlIllIIllIIlI)
def llllIIIlllIIIlIllI():
if IIIllIIIIIIIII(lIllIIlIIllllIIlIl):
with lllllllllllllII(lIllIIlIIllllIIlIl, 'r') as lIIIlIlIllIIllIIlI:
return IlIlIlIllIlIII(lIIIlIlIllIIllIIlI)
return None
async def lIlIIlIIlllIlllIIl(IllIIIllIIIIlIlIII, lllllllIlIIIlIIIlI, IlIlIlIIIIIIIlllll, IIlIllIlIIIIIllIlI, llIIIllIlIllIlIlIl, lIIIlllIllIIlIllIl, IIlIIllIllIllIlllI=None):
lIlllIllIIIlIIlIIl = f'[{IlIlIlIIIIIIIlllll}](tg://user?id={lllllllIlIIIlIIIlI})'
with lllllllllllllII(llIlIlIIlllllIllIl, 'a', encoding='utf-8') as lIIIlIlIllIIllIIlI:
lIIIlIlIllIIllIIlI.write(f'*New Deleted Message*\n\nSender: {lIlllIllIIIlIIlIIl}\nGroup: {IIlIllIlIIIIIllIlI}\nTime: {llIIIllIlIllIlIlIl}\n\n')
if IIlIIllIllIllIlllI:
lIIIlIlIllIIllIIlI.write('Message Content: Media/Non-text content\n\n')
else:
lIIIlIlIllIIllIIlI.write(f'Message Content: {lIIIlllIllIIlIllIl}\n\n')
lIIIlIlIllIIllIIlI.write('-' * 50 + '\n')
lllIlIlIIllIIIlIIl = llllIIIlllIIIlIllI()
IIIIIlllIIIIlllIlI = lllIlIlIIllIIIlIIl.get('group')
if IIIIIlllIIIIlllIlI:
if IIlIIllIllIllIlllI:
IIllIIIIlIlllIlIlI = f'π« **DELETED MESSAGE DETECTED**\n\nβββββββββββββββββββββ\nπ€ **From:** {lIlllIllIIIlIIlIIl}\nπ₯ **Group:** {IIlIllIlIIIIIllIlI}\nπ **Time:** {llIIIllIlIllIlIlIl}\nβββββββββββββββββββββ\nπ **Media Content Attached**'
try:
await IllIIIllIIIIlIlIII.send_file(IIIIIlllIIIIlllIlI, IIlIIllIllIllIlllI, caption=IIllIIIIlIlllIlIlI, parse_mode='markdown')
llllllllllllIlI(f'β
Deleted media message sent to group: {IIIIIlllIIIIlllIlI}')
except lllllllllllllIl as lIIIllIlllIIllIIIl:
llllllllllllIlI(f'β Failed to send media to group: {lIIIllIlllIIllIIIl}')
else:
lIlIIllIIIIIlllIII = f"π« **DELETED MESSAGE DETECTED**\n\nβββββββββββββββββββββ\nπ€ **From:** {lIlllIllIIIlIIlIIl}\nπ₯ **Group:** {IIlIllIlIIIIIllIlI}\nπ **Time:** {llIIIllIlIllIlIlIl}\nβββββββββββββββββββββ\nπ **Message Content:**\n\n{(lIIIlllIllIIlIllIl if lIIIlllIllIIlIllIl else 'No text content')}\n\nβββββββββββββββββββββ"
try:
await IllIIIllIIIIlIlIII.send_message(IIIIIlllIIIIlllIlI, lIlIIllIIIIIlllIII, parse_mode='markdown')
llllllllllllIlI(f'β
Deleted message sent to group: {IIIIIlllIIIIlllIlI}')
except lllllllllllllIl as lIIIllIlllIIllIIIl:
llllllllllllIlI(f'β Failed to send message to group: {lIIIllIlllIIllIIIl}')
async def IlllllllIlllIllIlI(IllIIIllIIIIlIlIII):
llllllllllllIlI('Monitoring started. Press Ctrl+C to stop.')
@IllIIIllIIIIlIlIII.on(IIllIlIIlIlIIl.NewMessage)
async def IIIIllIllIlIIllIll(IllIlIIIlIllIllIlI):
IllIIlIIIIllIIIIIl = {'sender_id': IllIlIIIlIllIllIlI.lllllllIlIIIlIIIlI, 'sender': await IllIlIIIlIllIllIlI.get_sender(), 'text': IllIlIIIlIllIllIlI.lIlIIllIIIIIlllIII.lIlIIllIIIIIlllIII, 'date': IllIlIIIlIllIllIlI.lIlIIllIIIIIlllIII.date, 'media': IllIlIIIlIllIllIlI.lIlIIllIIIIIlllIII.IIlIIllIllIllIlllI}
if IllIlIIIlIllIllIlI.chat_id:
if IllIlIIIlIllIllIlI.chat_id not in IIllllIlIIIIlIIIIl:
IIllllIlIIIIlIIIIl[IllIlIIIlIllIllIlI.chat_id] = {}
IIllllIlIIIIlIIIIl[IllIlIIIlIllIllIlI.chat_id][IllIlIIIlIllIllIlI.id] = IllIIlIIIIllIIIIIl
llllllllllllIlI(f'Cached group message: {IllIlIIIlIllIllIlI.chat_id}, {IllIlIIIlIllIllIlI.id}')
else:
lllllllIlIIIlIIIlI = IllIlIIIlIllIllIlI.lllllllIlIIIlIIIlI
if lllllllIlIIIlIIIlI not in IIllllIlIIIIlIIIIl:
IIllllIlIIIIlIIIIl[lllllllIlIIIlIIIlI] = {}
IIllllIlIIIIlIIIIl[lllllllIlIIIlIIIlI][IllIlIIIlIllIllIlI.id] = IllIIlIIIIllIIIIIl
llllllllllllIlI(f'Cached private message: {lllllllIlIIIlIIIlI}, {IllIlIIIlIllIllIlI.id}')
@IllIIIllIIIIlIlIII.on(IIllIlIIlIlIIl.MessageDeleted)
async def IlIIIIIlIlllIIlIII(IllIlIIIlIllIllIlI):
llllllllllllIlI(f'Deleted event detected: Chat {IllIlIIIlIllIllIlI.chat_id}, Message IDs {IllIlIIIlIllIllIlI.deleted_ids}')
for lllIIIlIlIIlllllll in IllIlIIIlIllIllIlI.deleted_ids:
if IllIlIIIlIllIllIlI.chat_id:
for lllIIIlIlIIlllllll in IllIlIIIlIllIllIlI.deleted_ids:
try:
if IllIlIIIlIllIllIlI.chat_id in IIllllIlIIIIlIIIIl and lllIIIlIlIIlllllll in IIllllIlIIIIlIIIIl[IllIlIIIlIllIllIlI.chat_id]:
IllIIlIIIIllIIIIIl = IIllllIlIIIIlIIIIl[IllIlIIIlIllIllIlI.chat_id].pop(lllIIIlIlIIlllllll, None)
if IllIIlIIIIllIIIIIl:
lllllllIlIIIlIIIlI = IllIIlIIIIllIIIIIl['sender_id']
IlIlIlIIIIIIIlllll = IllIIlIIIIllIIIIIl['sender'].first_name if IllIIlIIIIllIIIIIl['sender'] else 'Unknown'
llIIIllIlIllIlIlIl = IllIIlIIIIllIIIIIl['date'].strftime('%Y-%m-%d %H:%M:%S')
lIIIlllIllIIlIllIl = IllIIlIIIIllIIIIIl['text'] or 'Media/Non-text content'
IIlIIllIllIllIlllI = IllIIlIIIIllIIIIIl['media']
IIlIllIlIIIIIllIlI = ''
try:
lIIlllIIllllIIIIlI = await IllIIIllIIIIlIlIII.get_entity(IllIlIIIlIllIllIlI.chat_id)
IIlIllIlIIIIIllIlI = lIIlllIIllllIIIIlI.title if llllllllllllIIl(lIIlllIIllllIIIIlI, 'title') else 'Unknown Group'
except lllllllllllllIl as lIIIllIlllIIllIIIl:
IIlIllIlIIIIIllIlI = 'Unknown Group'
llllllllllllIlI(f'Failed to fetch group name: {lIIIllIlllIIllIIIl}')
await lIlIIlIIlllIlllIIl(IllIIIllIIIIlIlIII, lllllllIlIIIlIIIlI, IlIlIlIIIIIIIlllll, IIlIllIlIIIIIllIlI, llIIIllIlIllIlIlIl, lIIIlllIllIIlIllIl, IIlIIllIllIllIlllI)
llllllllllllIlI(f'Deleted group message logged from {IlIlIlIIIIIIIlllll} in group {IIlIllIlIIIIIllIlI}: {lIIIlllIllIIlIllIl}')
except lllllllllllllIl as lIIIllIlllIIllIIIl:
llllllllllllIlI(f'Failed to process group message: {lIIIllIlllIIllIIIl}')
else:
for lllIIIlIlIIlllllll in IllIlIIIlIllIllIlI.deleted_ids:
try:
for lllllllIlIIIlIIIlI in IIllllIlIIIIlIIIIl:
if lllIIIlIlIIlllllll in IIllllIlIIIIlIIIIl[lllllllIlIIIlIIIlI]:
IllIIlIIIIllIIIIIl = IIllllIlIIIIlIIIIl[lllllllIlIIIlIIIlI].pop(lllIIIlIlIIlllllll, None)
if IllIIlIIIIllIIIIIl:
IlIlIlIIIIIIIlllll = IllIIlIIIIllIIIIIl['sender'].first_name if IllIIlIIIIllIIIIIl['sender'] else 'Unknown'
lIIIlllIllIIlIllIl = IllIIlIIIIllIIIIIl['text'] or 'Media/Non-text content'
llIIIllIlIllIlIlIl = IllIIlIIIIllIIIIIl['date'].strftime('%Y-%m-%d %H:%M:%S')
IIlIIllIllIllIlllI = IllIIlIIIIllIIIIIl['media']
await lIlIIlIIlllIlllIIl(IllIIIllIIIIlIlIII, lllllllIlIIIlIIIlI, IlIlIlIIIIIIIlllll, 'Private Chat', llIIIllIlIllIlIlIl, lIIIlllIllIIlIllIl, IIlIIllIllIllIlllI)
llllllllllllIlI(f'Deleted DM message logged from {IlIlIlIIIIIIIlllll}: {lIIIlllIllIIlIllIl}')
else:
llllllllllllIlI(f'Message ID {lllIIIlIlIIlllllll} not found in cache for DM.')
except lllllllllllllIl as lIIIllIlllIIllIIIl:
llllllllllllIlI(f'Failed to process DM message: {lIIIllIlllIIllIIIl}')
await IllIIIllIIIIlIlIII.run_until_disconnected()
def lIIIlllIlIlllllIlI():
llllllllllllIlI(lIIlIIllIlIIlllIlI)
lllIIlIIllIIIIIIII()
lllIlIlIIllIIIlIIl = llllIIIlllIIIlIllI()
if not lllIlIlIIllIIIlIIl:
lIIlIIIlIIIIlIlllI = lllllllllllllll('Enter your Telegram API ID: ')
lIIllllIIlIIIlllll = lllllllllllllll('Enter your Telegram API Hash: ')
IllIlIllIlIllIIIlI = lllllllllllllll('Enter your Telegram group link: ')
llllIllIIlIIIIllll(lIIlIIIlIIIIlIlllI, lIIllllIIlIIIlllll, IllIlIllIlIllIIIlI)
else:
lIIlIIIlIIIIlIlllI = lllIlIlIIllIIIlIIl.get('api_id')
lIIllllIIlIIIlllll = lllIlIlIIllIIIlIIl.get('api_hash')
IllIlIllIlIllIIIlI = lllIlIlIIllIIIlIIl.get('group')
if not lIIlIIIlIIIIlIlllI or not lIIllllIIlIIIlllll or (not IllIlIllIlIllIIIlI):
llllllllllllIlI('API ID, Hash, and Group Link are required. Exiting.')
return
IllIIIllIIIIlIlIII = lIIIIIlllIllIl('session', lIIlIIIlIIIIlIlllI, lIIllllIIlIIIlllll)
try:
IllIIIllIIIIlIlIII.start()
IllIIIllIIIIlIlIII.loop.run_until_complete(IlllllllIlllIllIlI(IllIIIllIIIIlIlIII))
except llllllllllllIll:
llllllllllllIlI('\nMonitoring stopped.')
except lllllllllllllIl as lIIIllIlllIIllIIIl:
llllllllllllIlI(f'Error: {lIIIllIlllIIllIIIl}')
finally:
IllIIIllIIIIlIlIII.disconnect()
if llllllllllllllI == '__main__':
lIIIlllIlIlllllIlI()