如何解决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 小时),然后在其他时间转发保存的消息。
pickleDB 和 dill 库都不能保存消息对象:
"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 举报,一经查实,本站将立刻删除。