mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-26 11:23:46 +03:00
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
from .base import EventBuilder
|
|
from .. import _tl
|
|
from ..types import _custom
|
|
|
|
|
|
class MessageDeleted(EventBuilder, _custom.chatgetter.ChatGetter):
|
|
"""
|
|
Occurs whenever a message is deleted. Note that this event isn't 100%
|
|
reliable, since Telegram doesn't always notify the clients that a message
|
|
was deleted.
|
|
|
|
.. important::
|
|
|
|
Telegram **does not** send information about *where* a message
|
|
was deleted if it occurs in private conversations with other users
|
|
or in small group chats, because message IDs are *unique* and you
|
|
can identify the chat with the message ID alone if you saved it
|
|
previously.
|
|
|
|
Telethon **does not** save information of where messages occur,
|
|
so it cannot know in which chat a message was deleted (this will
|
|
only work in channels, where the channel ID *is* present).
|
|
|
|
This means that the ``chats=`` parameter will not work reliably,
|
|
unless you intend on working with channels and super-groups only.
|
|
|
|
Example
|
|
.. code-block:: python
|
|
|
|
from telethon import events
|
|
|
|
@client.on(events.MessageDeleted)
|
|
async def handler(event):
|
|
# Log all deleted message IDs
|
|
for msg_id in event.deleted_ids:
|
|
print('Message', msg_id, 'was deleted in', event.chat_id)
|
|
"""
|
|
@classmethod
|
|
def _build(cls, client, update, entities):
|
|
if isinstance(update, _tl.UpdateDeleteMessages):
|
|
peer = None
|
|
elif isinstance(update, _tl.UpdateDeleteChannelMessages):
|
|
peer = _tl.PeerChannel(update.channel_id)
|
|
else:
|
|
return None
|
|
|
|
self = cls.__new__(cls)
|
|
self._client = client
|
|
self._chat = entities.get(peer)
|
|
self.deleted_id = None if not update.messages else update.messages[0]
|
|
self.deleted_ids = update.messages
|
|
return self
|