You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Telegram API获取频道帖子讨论区消息?(Python Telethon实现)

用Telethon获取频道帖子讨论区消息文本

要获取机器人已加入频道中帖子讨论区的消息,核心是抓取帖子的回复线程,以下是具体实现方案:

方法1:批量获取已有帖子的讨论区消息

先获取频道内的主帖子,再针对每个帖子拉取其所有回复消息:

from telethon import TelegramClient
import asyncio

# 替换为你的API信息和机器人Token
API_ID = 你的API_ID
API_HASH = "你的API_HASH"
BOT_TOKEN = "你的机器人Token"
TARGET_CHANNEL = "目标频道的用户名/ID"

async def fetch_discussion_messages():
    async with TelegramClient("bot_session", API_ID, API_HASH).start(bot_token=BOT_TOKEN) as client:
        # 获取目标频道实体
        channel = await client.get_entity(TARGET_CHANNEL)
        
        # 拉取频道内最新的10条主帖子(可调整limit参数)
        main_posts = await client.get_messages(channel, limit=10)
        
        for post in main_posts:
            # 仅处理有回复的帖子
            if post.replies and post.replies.replies > 0:
                print(f"=== 帖子ID {post.id} 的讨论区 ===")
                # 获取该帖子的所有回复消息
                replies = await client.get_message_replies(channel, post.id)
                for reply in replies:
                    # 输出有文本内容的回复
                    if reply.text:
                        print(f"- {reply.text}")

if __name__ == "__main__":
    asyncio.run(fetch_discussion_messages())

方法2:实时监听新的讨论区消息

如果需要实时捕获新发布的讨论消息,可以通过监听NewMessage事件,判断消息是否是对主帖子的回复:

from telethon import TelegramClient, events
import asyncio

API_ID = 你的API_ID
API_HASH = "你的API_HASH"
BOT_TOKEN = "你的机器人Token"
TARGET_CHANNEL = "目标频道的用户名/ID"

async def listen_discussion():
    client = TelegramClient("bot_session", API_ID, API_HASH)
    await client.start(bot_token=BOT_TOKEN)
    
    @client.on(events.NewMessage(chats=TARGET_CHANNEL))
    async def handle_reply(event):
        # 检查当前消息是否是对某条主帖子的回复
        if event.message.reply_to_msg_id:
            # 可选:获取被回复的主帖子信息
            original_post = await event.get_reply_message()
            print(f"帖子ID {original_post.id} 新增讨论消息:{event.message.text}")
    
    await client.run_until_disconnected()

if __name__ == "__main__":
    asyncio.run(listen_discussion())

注意事项

  • 确保机器人已被添加到目标频道,且拥有读取消息的权限(私密频道需手动邀请并确认权限)
  • 部分频道可能限制机器人访问讨论区,需确认频道设置是否允许机器人查看回复
  • 若遇到权限问题,可尝试将机器人提升为频道管理员(仅必要时)

内容的提问来源于stack exchange,提问作者cmdFormatC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:15:07