我收到TypeError:“MessageService”对象不可迭代
首先,我使用 iter_messages
client
方法保存来自 channel 的最后 10 条消息,该方法返回 telethon.sync._SyncGen
生成器对象。
然后我迭代这个生成器并尝试通过 client
的 将每条消息 (
方法,可以采用 msg
) 发送给用户 (username
) send_messagestr
或 telethon Message
对象作为消息参数。
但是,这里的 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()
工作正确吗?
最佳答案
MessageService
对象是 Telegram 发送的消息,例如“有人加入了这个群组”或“ channel 照片已更改”。 iter_messages
返回这些消息以及其他消息,但您无法发送这些消息。正如您在自己链接的文档中看到的,MessageService
对象内没有真正的消息。只有一个 MessageAction
。
您可以通过检查 type()
或通过 hasattr(msg, 'message')
在循环中跳过此类消息。普通消息有 message
字段,这是您要发送的文本。如果您想send_message
(而不是转发),我认为您的代码应该更改为:
client.send_message(username, getattr(msg, 'message', '...'))
关于telegram - 如何从 Telethon 中的 MessageService 对象获取 Message 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53467988/