如何在Telegram机器人私聊中生成特定消息的可点击链接?
解决Telegram机器人私聊消息跳转链接的问题
为什么你之前的链接格式无效
你尝试的几种链接都是针对公开频道/超级群组或公开用户主页内容的,而私聊消息属于一对一的非公开会话,这些格式不适用,所以会返回权限错误或找不到应用。
可行的实现方法
方法1:使用tg://openmessage原生协议
这是Telegram官方支持的用于打开私聊特定消息的协议,格式如下:
tg://openmessage?user_id=<执行者数字ID>&message_id=<目标消息ID>
- 必须使用执行者的数字用户ID(不能用用户名或机器人用户名),因为私聊会话是基于用户ID关联的。
- 该协议在Windows和Android官方客户端中均能正常工作,点击后会直接打开与机器人的私聊并定位到指定消息。
方法2:发送消息引用(更可靠)
不需要额外链接,直接在给执行者的消息中引用目标申请消息。Telegram原生支持同一聊天内的消息引用,执行者点击引用即可直接跳转到原消息。
实现时,调用机器人API发送消息时,设置reply_to_message_id为目标申请消息的ID,这样发送的消息会自动带上原消息的引用,点击引用就能跳转。
方法3:Inline按钮跳转
如果需要用按钮形式引导,可以创建一个Inline键盘按钮,将按钮的url属性设置为上述tg://openmessage协议链接。示例(伪代码):
from telegram import InlineKeyboardButton, InlineKeyboardMarkup button = InlineKeyboardButton( "查看申请", url="tg://openmessage?user_id=123456&message_id=789012" ) keyboard = InlineKeyboardMarkup([[button]]) # 发送带按钮的消息给执行者 bot.send_message(chat_id=执行者ID, text="请查看你的申请:", reply_markup=keyboard)
注意事项
- 确保执行者与机器人已有私聊会话(你已确认消息ID和用户ID正确,这一点满足)。
- 所有ID必须为纯数字,不能包含任何额外字符(比如引号、字母)。
内容的提问来源于stack exchange,提问作者aiswe
相关产品推荐
相关产品推荐

