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

aiogram中如何获取机器人已发送至Telegram频道的消息ID

aiogram框架获取频道已发消息ID并实现评论回复的方法

核心逻辑

aiogram所有调用发送消息/媒体的接口执行完成后,会直接返回对应已发送内容的Message对象,不需要额外发起查询请求,直接读取该对象的message_id属性,就能拿到这条消息在会话中的唯一ID。
要实现频道消息的评论挂载效果,需要配合频道关联的讨论组ID,传入reply_to_message_id参数绑定目标消息ID即可。

代码示例(基于aiogram 3.x主流版本)

1. 发送频道消息并获取消息ID

from aiogram import Bot
from aiogram.types import Message

# 初始化机器人实例,替换为你自己的Bot Token
bot = Bot(token="YOUR_BOT_TOKEN")

async def send_channel_post():
    # 替换为你的频道ID,支持@用户名格式或者纯数字ID
    channel_chat_id = "@your_own_channel"
    # 发送消息,接口返回值即为已发送消息对应的Message实例
    sent_post: Message = await bot.send_message(
        chat_id=channel_chat_id,
        text="这是机器人发布的频道正文内容"
    )
    # 读取message_id属性拿到目标ID
    post_message_id = sent_post.message_id
    print(f"已发送频道消息ID:{post_message_id}")
    return post_message_id

2. 针对目标消息发送评论

async def leave_comment(post_message_id: int):
    # 替换为频道绑定的关联讨论组ID,注意必须是数字格式的群组ID
    discuss_chat_id = -1001234567890
    await bot.send_message(
        chat_id=discuss_chat_id,
        text="这是机器人自动发送的评论内容",
        # 绑定要回复的消息ID,即可形成评论挂载效果
        reply_to_message_id=post_message_id
    )

注意事项

  • 所有发送类接口(包括send_photo、send_video、send_document等发媒体的接口)返回值结构一致,都可以直接通过.message_id拿到对应内容的ID,没有例外。
  • 评论功能依赖频道的关联讨论组,必须提前在频道设置中开启关联讨论组,否则不存在评论区,接口会直接报错。
  • 机器人需要同时被添加为频道管理员、关联讨论组成员/管理员,拥有对应场景的发消息权限,否则会触发权限不足报错。
  • 评论发送时chat_id必须填关联讨论组的ID,不能填频道本身的ID——如果填频道ID加reply_to_message_id,只会在频道内发布一条带引用的新帖子,不会进入评论区。
  • 该逻辑同样适用于回复频道内非机器人发布的内容,只要拿到对应内容的message_id即可完成评论。
  • 关联讨论组的ID可以通过将机器人加入讨论组后,在群组内发送任意消息,通过机器人的更新事件拿到对应群组的数字ID,不需要额外调用复杂接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:21:34