Telethon/telethon/events/messageedited.py

46 lines
1.5 KiB
Python
Raw Normal View History

2018-04-05 21:14:22 +03:00
from .common import name_inner_event
from .newmessage import NewMessage
from ..tl import types
@name_inner_event
class MessageEdited(NewMessage):
"""
Event fired when a message has been edited.
.. warning::
On channels, `Message.out <telethon.tl.custom.message.Message>`
will be ``True`` if you sent the message originally, **not if
you edited it**! This can be dangerous if you run outgoing
commands on edits.
Some examples follow:
* You send a message "A", ``out is True``.
* You edit "A" to "B", ``out is True``.
* Someone else edits "B" to "C", ``out is True`` (**be careful!**).
* Someone sends "X", ``out is False``.
* Someone edits "X" to "Y", ``out is False``.
* You edit "Y" to "Z", ``out is False``.
Since there are useful cases where you need the right ``out``
value, the library cannot do anything automatically to help you.
Instead, consider using ``from_users='me'`` (it won't work in
broadcast channels at all since the sender is the channel and
not you).
2018-04-05 21:14:22 +03:00
"""
2018-07-19 02:47:32 +03:00
@classmethod
def build(cls, update):
2018-04-05 21:14:22 +03:00
if isinstance(update, (types.UpdateEditMessage,
types.UpdateEditChannelMessage)):
2018-07-19 02:47:32 +03:00
event = cls.Event(update.message)
2018-04-05 21:14:22 +03:00
else:
return
event._entities = update._entities
2018-07-11 12:22:43 +03:00
return event
2018-04-05 21:14:22 +03:00
class Event(NewMessage.Event):
pass # Required if we want a different name for it