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

如何在Python Telegram Bot中获取频道转发消息的原始message_id

获取频道转发消息的原始ID(Python Telegram Bot v21+)

Python Telegram Bot 21版本后重构了转发消息的相关接口,原来的update.message.forward_from_message_id被替换为Message.forward_origin属性,需要根据转发来源类型提取原始消息ID:

  • 当消息从频道转发而来时,forward_origin会是ChatForwardOrigin类型
  • 原始消息ID存储在forward_origin.message_id字段中,同时可通过forward_origin.chat.id获取原始频道ID

代码示例

from telegram import Update, ChatForwardOrigin
from telegram.ext import ContextTypes

async def handle_incoming_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    msg = update.effective_message
    # 判断是否为转发消息
    if msg.forward_origin:
        # 筛选频道转发的场景
        if isinstance(msg.forward_origin, ChatForwardOrigin):
            original_msg_id = msg.forward_origin.message_id
            original_chat_id = msg.forward_origin.chat.id
            # 这里可添加自定义处理逻辑
            print(f"原始频道消息ID: {original_msg_id},来源频道ID: {original_chat_id}")

补充:如果是用户间的转发,forward_origin会是UserForwardOrigin类型,按需判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:29:52