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

使用python-telegram-bot能否获取跨聊天回复的原消息详情?

问题解答

当用户使用Telegram的「在其他聊天中回复」功能,将群组消息的回复发送给机器人时,可以追踪到原消息的群组ID、用户ID、消息ID等详情,但你需要注意正确的字段获取方式和权限配置,以下是具体说明和解决方案:

核心原因:你可能忽略了权限或版本问题

你提到update.effective_message.reply_to_message返回None,大概率是以下原因之一:

  • 机器人未开启「读取所有消息」权限
  • 使用的python-telegram-bot版本过低,不支持该场景的消息结构解析
  • 用户操作不符合「跨聊天回复」的标准流程

正确的实现步骤

1. 配置机器人权限

在BotFather中发送/setprivacy,选择你的机器人,然后设置为Disable,这样机器人可以接收所有类型的消息(包括跨聊天回复)。

2. 使用最新稳定版python-telegram-bot

确保你使用的是v13及以上版本(推荐最新稳定版),旧版本对跨聊天回复的消息结构支持不完善。可以通过pip更新:

pip install --upgrade python-telegram-bot

3. 正确获取原消息详情

当用户发送跨聊天回复时,原消息的所有信息会封装在update.effective_message.reply_to_message中,示例代码如下:

from telegram import Update
from telegram.ext import Updater, MessageHandler, Filters, CallbackContext

def track_cross_reply(update: Update, context: CallbackContext):
    current_msg = update.effective_message
    # 检查是否存在跨聊天回复的原消息
    if current_msg.reply_to_message:
        original_msg = current_msg.reply_to_message
        # 提取原消息关键信息
        original_chat_id = original_msg.chat.id
        original_user_id = original_msg.from_user.id
        original_message_id = original_msg.message_id
        
        # 输出或处理信息
        print(f"原群组/超级群组ID: {original_chat_id}")
        print(f"原消息发送者ID: {original_user_id}")
        print(f"原消息在群组中的ID: {original_message_id}")
    else:
        print("未检测到跨聊天回复的原消息")

def main():
    # 替换为你的机器人Token
    updater = Updater("YOUR_BOT_TOKEN")
    dp = updater.dispatcher
    # 处理所有非命令消息
    dp.add_handler(MessageHandler(Filters.all & ~Filters.command, track_cross_reply))
    updater.start_polling()
    updater.idle()

if __name__ == "__main__":
    main()

特殊情况说明

如果以上配置后仍然无法获取原消息信息,可能是以下限制导致:

  • 原消息所在的超级群组开启了「隐藏成员」功能,导致无法获取原发送者ID
  • 原消息已被删除,Telegram无法返回完整的原消息数据
  • 用户实际操作是「转发消息」而非「跨聊天回复」,这种场景下需要使用forward_origin字段,但转发和跨聊天回复是两种不同的操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:18