如何从Telethon中的MessageService对象获取Message对象

时间:2018-11-25 13:31:35

标签: telegram telethon

我得到loc

第一,我正在使用TypeError: 'MessageService' object is not iterable iter_messages方法从通道保存最后10条消息,该方法返回client生成器对象。 然后,我遍历此生成器,尝试通过telethon.sync._SyncGen的{​​{1}}方法将每条消息(msg)发送给用户(username),该方法可以采用{{ 1}}或Telethon client对象作为消息参数。

但是我的send_message对象不是str类的实例,而是Message类(https://lonamiwebs.github.io/Telethon/constructors/message_service.html)的实例,我认为这就是我得到错误。

msg

我的问题是如何获取Message对象而不是MessageService以避免错误并使message_objects = client.iter_messages(channel_name, limit=10) for msg in message_objects: client.send_message(username, msg) 正常工作?

1 个答案:

答案 0 :(得分:1)

MessageService对象是电报的消息,例如“有人加入了此论坛”或“频道照片已更改”。 iter_messages返回这些消息以及其他消息,但是您无法发送这些消息。正如您在链接自己的文档中看到的那样,MessageService对象内部没有真实的消息。只有MessageAction

您可以在循环中跳过此类消息,只需检查其type()或通过hasattr(msg, 'message')即可。普通邮件的message字段是您要发送的文本。如果您想send_message(不转发),我认为您的代码应更改为:

client.send_message(username, getattr(msg, 'message', '...'))
相关问题