微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pickle Telethon 消息抛出“无法pickle '_asyncio.Future' 对象”

如何解决Pickle Telethon 消息抛出“无法pickle '_asyncio.Future' 对象”

messages = []

async def save_messages():
   async for dialog in client.iter_dialogs():
       async for msg in client.iter_messages(dialog):
           messages.append(msg)
           with open("data.db",'wb') as f:
               pickle.dump(messages,f) # "TypeError: cannot pickle '_asyncio.Future' object"
               print("saved to database")


client = TelegramClient('Session',config.api_id,config.api_hash)
client.start()
client.loop.run_until_complete(save_messages())

Telethon一个名为:forward_message方法,我可以通过它转发消息。我想定期save_messages(例如每 1 小时),然后在其他时间转发保存的消息。

pickleDBdill 库都不能保存消息对象:

"TypeError: 不能pickle '_asyncio.Future' 对象"

我阅读了很多相关问题,但没有一个我有帮助。你有什么主意吗?如果此问题与 pickleDB 相关,是否有任何库没有此问题?

解决方法

我还没有找到在 pickleDB 中转储 Telethon Message 的任何解决方案,但作为临时/替代解决方案,我可以存储消息 ID 和聊天 ID(消息所属):>

async for dialog in client.iter_dialogs():
   async for msg in client.iter_messages(dialog):
      db.save_message(msg.id,msg.chat.id)

然后使用这两个 ID 转发该消息

await client.forward_messages(entity,message_id,chat_id)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。