我正试图遵循this answer,使用Telethon从电报组下载特定数量的消息。我必须修改代码,因为有多个错误和警告,并且此后库及其类也已更改。这是到目前为止我得到的:
import os
import sys
from telethon.sync import TelegramClient
from telethon.tl.types import InputPeerChat
session_name = "<session_name>"
api_id = <api_id>
api_hash = "<api_hash>"
chat_id = <chat_id>
os.chdir(sys.path[0])
if f"{session_name}.session" in os.listdir():
os.remove(f"{session_name}.session")
client = TelegramClient(session_name, api_id, api_hash)
await client.connect()
chat = InputPeerChat(chat_id)
client.get_messages(chat, limit=10)
但是,在Jupyter上运行上面的代码,我得到的是:
<协程对象MessageMethods.get_messages at 0x1049c8cb0>
我尝试使用for msg in messages
部分来提取/解析信息,但出现错误:
TypeError:“协程”对象不可迭代
如果您能帮助我知道在给定聊天ID的电报组中下载特定数量的最后一条消息的规范和简洁的方法,我将不胜感激。
答案 0 :(得分:0)
只需设置要从中检索消息历史记录的实体 类似,而无需构造InputPeer对象。
from telethon.sync import TelegramClient
session_name = '<session_name>'
api_id = <api_id>
api_hash = '<api_hash>'
#chat = <chat id>
#chat = <user id>
#chat = 'https://t.me/group_invite_link'
chat = 'me'
client = TelegramClient(session_name, api_id, api_hash)
client.start()
messages = client.get_messages(chat, limit=5)
print(messages)
client.disconnect()