Skip to content

Instantly share code, notes, and snippets.

@BitTheByte
Last active March 25, 2022 01:05
Show Gist options
  • Select an option

  • Save BitTheByte/9b1b9ed39989748afad979f1657bdd0c to your computer and use it in GitHub Desktop.

Select an option

Save BitTheByte/9b1b9ed39989748afad979f1657bdd0c to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
from telethon.sync import TelegramClient,events
import tempfile
import logging
import os
logging.basicConfig(level=logging.WARNING)
logging.getLogger('asyncio').setLevel(logging.ERROR)
API_HASH = ''
API_ID = 0
MAX_MEM = 1000
memory = {}
client = TelegramClient('telegram_session', API_ID, API_HASH)
async def on_delete_message(saved):
user = saved["user"]
event = saved["event"]
message = event.message.message
chat = await client.get_input_entity(user.id)
template_msg = "User: %s || Type: Text || Message: {message}" % (user.first_name)
template_media = "User: %s || Type: MediaOnly" % (user.first_name)
template_media_msg = "User: %s || Type: MediaWithText || Message: {message}" % (user.first_name)
if not event.media == None:
temp_name = next(tempfile._get_candidate_names())
media = await client.download_media(event.media, temp_name)
if message:
await client.send_message(chat,template_media_msg.format(message=message), file=media)
else:
await client.send_message(chat,template_media, file=media)
os.unlink(media)
return
await event.reply(template_msg.format(message=message))
@client.on(events.NewMessage())
async def handler(event):
memory.update({
event.id: {
"event": event,
"user": await client.get_entity(event.from_id)
}
})
@client.on(events.MessageDeleted)
async def handler(event):
global memory
deleted_ids = event.deleted_ids
for deleted_message in deleted_ids:
saved = memory[deleted_message]
await on_delete_message(saved)
if len(memory) >= MAX_MEM:
memory = {}
client.start()
client.run_until_disconnected()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment