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.

Revisions

  1. BitTheByte revised this gist Mar 25, 2022. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions report_deleted_telegram_messages.py
    Original file line number Diff line number Diff line change
    @@ -28,7 +28,10 @@ async def on_delete_message(saved):

    chat_from = event.chat if event.chat else (await event.get_chat())
    chat_title = f"| Group: {chat_from.title}" if getattr(chat_from, "title", None) else ''
    user_info = f"{user.first_name} {user.last_name} (@{user.username}) {chat_title}"

    first_name = user.first_name if user.first_name else ''
    last_name = user.last_name if user.last_name else ''
    user_info = f"{first_name} {last_name} (@{user.username}) {chat_title}"

    template_msg = "User: %s\n{message}" % user_info
    template_media = "User: %s" % user_info
    @@ -50,7 +53,7 @@ async def on_delete_message(saved):
    @client.on(events.NewMessage)
    async def handle_new_message(event):
    me = await client.get_entity("me")
    from_id = event.from_id if event.from_id else event.peer_id.user_id
    from_id = event.from_id.user_id if event.from_id else event.peer_id.user_id
    if me.id == from_id:
    return

  2. BitTheByte revised this gist Mar 25, 2022. 1 changed file with 23 additions and 11 deletions.
    34 changes: 23 additions & 11 deletions report_deleted_telegram_messages.py
    Original file line number Diff line number Diff line change
    @@ -3,6 +3,7 @@
    from collections import defaultdict
    import tempfile
    import logging
    import time
    import os

    logging.basicConfig(level=logging.WARNING)
    @@ -11,7 +12,7 @@
    SELF_REPORT = True
    API_HASH = ''
    API_ID = 0
    MAX_MEM = 1000
    MAX_MEM = 10000
    memory = {}
    client = TelegramClient('telegram_session', API_ID, API_HASH)

    @@ -25,9 +26,13 @@ async def on_delete_message(saved):
    else:
    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)
    chat_from = event.chat if event.chat else (await event.get_chat())
    chat_title = f"| Group: {chat_from.title}" if getattr(chat_from, "title", None) else ''
    user_info = f"{user.first_name} {user.last_name} (@{user.username}) {chat_title}"

    template_msg = "User: %s\n{message}" % user_info
    template_media = "User: %s" % user_info
    template_media_msg = "User: %s\n{message}" % user_info

    if not event.media == None:
    temp_name = next(tempfile._get_candidate_names())
    @@ -42,20 +47,22 @@ async def on_delete_message(saved):
    await client.send_message(chat,template_msg.format(message=message))


    @client.on(events.NewMessage())
    async def handler(event):
    @client.on(events.NewMessage)
    async def handle_new_message(event):
    me = await client.get_entity("me")
    if me.id == event.from_id:
    from_id = event.from_id if event.from_id else event.peer_id.user_id
    if me.id == from_id:
    return

    memory.update({
    event.id: {
    "event": event,
    "user": await client.get_entity(event.from_id)
    "user": await client.get_entity(from_id)
    }
    })

    @client.on(events.MessageDeleted)
    async def handler(event):
    async def handle_message_deleted(event):
    global memory
    deleted_ids = event.deleted_ids
    for deleted_message in deleted_ids:
    @@ -68,5 +75,10 @@ async def handler(event):
    if len(memory) >= MAX_MEM:
    memory = {}

    client.start()
    client.run_until_disconnected()
    for _ in range(10):
    try:
    client.start()
    client.run_until_disconnected()
    except Exception as e:
    print(e)
    time.sleep(60)
  3. BitTheByte revised this gist May 4, 2020. 1 changed file with 22 additions and 10 deletions.
    32 changes: 22 additions & 10 deletions report_deleted_telegram_messages.py
    Original file line number Diff line number Diff line change
    @@ -1,23 +1,29 @@
    # -*- coding: utf-8 -*-
    from telethon.sync import TelegramClient,events
    from collections import defaultdict
    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)
    SELF_REPORT = True
    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)

    if SELF_REPORT:
    chat = await client.get_entity("me")
    else:
    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)
    @@ -33,11 +39,14 @@ async def on_delete_message(saved):
    os.unlink(media)
    return

    await event.reply(template_msg.format(message=message))
    await client.send_message(chat,template_msg.format(message=message))


    @client.on(events.NewMessage())
    async def handler(event):
    me = await client.get_entity("me")
    if me.id == event.from_id:
    return
    memory.update({
    event.id: {
    "event": event,
    @@ -50,9 +59,12 @@ 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)

    try:
    saved = memory[deleted_message]
    await on_delete_message(saved)
    except:
    pass

    if len(memory) >= MAX_MEM:
    memory = {}

  4. BitTheByte created this gist May 4, 2020.
    60 changes: 60 additions & 0 deletions report_deleted_telegram_messages.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,60 @@
    # -*- 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()