使用Telethon v1获取Telegram特定群组主题的前10条消息
解决Telethon获取特定论坛主题消息的问题
在Telethon 1.30.3中,直接通过主题链接调用get_entity无法正确识别论坛主题,需要拆分频道实体和主题ID来获取消息,具体步骤如下:
- 第一步:获取目标频道的实体,可以通过频道用户名或不带主题ID的频道链接调用
get_entity - 第二步:提取论坛主题ID,即你提供的链接末尾的数字(比如
https://t.me/ddostup/1118里的1118) - 第三步:使用
get_messages方法,通过reply_to参数指定主题ID,同时设置limit=10获取前10条消息
完整代码示例:
from telethon import TelegramClient # 替换为你的API信息 client = TelegramClient('my_session', api_id=你的API_ID, api_hash='你的API_HASH') async def fetch_topic_top_messages(): await client.start() # 获取频道实体 channel = await client.get_entity('ddostup') # 目标论坛主题ID topic_id = 1118 # 获取该主题的前10条消息 messages = await client.get_messages(channel, limit=10, reply_to=topic_id) # 遍历输出消息内容 for idx, msg in enumerate(messages, 1): print(f"第{idx}条消息:{msg.text}") with client: client.loop.run_until_complete(fetch_topic_top_messages())
补充说明:
- 论坛主题的消息在Telegram后台逻辑中属于"回复到主题顶层消息",因此
reply_to参数传入主题ID即可筛选出该主题下的所有消息 - 如果需要获取更早的消息,可以结合
offset_id参数进行分页 - 确保你的Telethon客户端已经通过认证,有权限访问目标频道
内容的提问来源于stack exchange,提问作者CcyBborg Cyb
相关产品推荐
相关产品推荐

