如何在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
相关产品推荐
相关产品推荐

