如何区分Telethon中的NewMessage和MessageEdited?
我有一个Python(3.9)类,它用来监控频道里的消息编辑和新消息。请问有没有办法在代码里判断消息是被编辑过的还是新发的?根据文档,编辑过的消息应该和新消息一样对待。
我尝试了以下代码,但没有成功:
class TelegramBot:
# --------------------------------
# Initialization
# --------------------------------
def __init__(self):
client.add_event_handler(
self.message_listener,
events.NewMessage(
chats=get_chat_ids(
"X",
"Y",
"Z",
)
),
)
# Register the event handler for edited messages
client.add_event_handler(
self.message_listener,
events.MessageEdited(chats=get_chat_ids("X", "Y")),
)
async def message_listener(self, event):
message = event.message.message
message_id = event.message.id # Get the ID of the triggering message
if event.chat_id in get_chat_ids("X", "Y"):
if isinstance(event, events.NewMessage):
...
elif isinstance(event, events.MessageEdited):
...
而且,似乎编辑过的消息会触发两种事件类型,这意味着同一条消息会让我写的代码执行两次。
用打印事件类型的方法也显示了同样的结果:
{type(event).__name__}
结果是 Event
1 个回答
0
因为 events.MessageEdited
的基础类是 events.NewMessage
,所以要检查它是不是 events.MessageEdited
的一个实例。如果不是,那它就是 events.NewMessage
的一个实例。
if isinstance(event, events.MessageEdited):
# it's an edited message
else:
# it's a new message