1

我越来越TypeError: 'MessageService' object is not iterable

拳头我正在使用iter_messages client返回telethon.sync._SyncGen生成器对象的方法从通道中保存最后 10 条消息。然后我遍历这个生成器并尝试通过's方法将每条消息 ( msg) 发送给用户 ( ),该方法可以将任一或 telethon对象作为消息参数。usernameclientsend_messagestrMessage

但是,我msg在这里的对象不是类的实例,Message而是MessageService类(https://lonamiwebs.github.io/Telethon/constructors/message_service.html),我认为这是我收到错误的原因。

message_objects = client.iter_messages(channel_name, limit=10)

for msg in message_objects:
    client.send_message(username, msg)

我的问题是如何获取Message对象而不是MessageService为了避免错误并使client.send_message()工作正常?

4

1 回答 1

3

MessageService对象是 Telegram 的消息,例如“有人加入了这个群组”或“频道照片已更改”。iter_messages将这些消息与其他消息一起返回,但您不能发送这些消息。正如您在自己链接的文档中看到的那样,对象内部没有真正的消息MessageService。只有一个MessageAction

你可以在你的循环中跳过这种类型的消息我检查他们的type()或通过hasattr(msg, 'message')。普通消息具有message您要发送的文本字段。如果您想send_message(不转发),我认为您的代码应更改为:

client.send_message(username, getattr(msg, 'message', '...'))
于 2018-11-26T04:44:14.597 回答