我得到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)
正常工作?
答案 0 :(得分:1)
MessageService
对象是电报的消息,例如“有人加入了此论坛”或“频道照片已更改”。 iter_messages
返回这些消息以及其他消息,但是您无法发送这些消息。正如您在链接自己的文档中看到的那样,MessageService
对象内部没有真实的消息。只有MessageAction
。
您可以在循环中跳过此类消息,只需检查其type()
或通过hasattr(msg, 'message')
即可。普通邮件的message
字段是您要发送的文本。如果您想send_message
(不转发),我认为您的代码应更改为:
client.send_message(username, getattr(msg, 'message', '...'))