使用Telethon从电报组下载特定数量的消息

时间:2020-04-02 12:21:19

标签: python telegram telethon

我正试图遵循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的电报组中下载特定数量的最后一条消息的规范和简洁的方法,我将不胜感激。

1 个答案:

答案 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()