Node-Red开发Telegram Bot如何实现自动绑定消息回复状态
Telegram Bot自动绑定回复线程功能实现方案
你观察到的用户无需手动点回复、输入框自动锁定为回复指定消息的效果,是Telegram Bot API原生提供的force_reply能力,不需要依赖第三方特殊接口。
核心逻辑
你之前通过传入历史message_id做回复关联的思路完全可行,只需要在Bot主动给用户发消息时,带上强制回复标记,用户收到消息后Telegram客户端会自动将输入状态切换为回复该条消息的模式,用户直接发送的内容会自动带上对该条消息的回复引用,全程不需要手动点击回复按钮。
node-red-contrib-telegrambot节点具体配置方法
该节点没有把这个配置做成可视化选项,但是支持通过options字段透传所有Telegram Bot API原生参数,按照以下方式构造消息即可:
- 给传入telegram sender节点的msg对象追加options配置,核心是设置
reply_markup.force_reply = true - 参考配置示例:
msg.payload = { chatId: msg.telegram.chatId, // 替换为实际目标聊天ID type: 'message', content: '请直接在输入框输入内容即可回复本条消息', options: { reply_markup: { force_reply: true, input_field_placeholder: '输入回复内容', // 可选:自定义输入框占位提示文字 selective: false // 单聊场景固定设为false即可;群聊场景如果要只对特定用户生效可设为true,配合entities字段指定目标用户 } } }
- 消息发送成功后,你在接收用户消息的节点里,直接读取
msg.telegram.message.reply_to_message.message_id就能拿到关联的原消息ID,用来做线程关联逻辑即可。
补充说明
Telegram客户端原生允许用户点击输入框旁的按钮主动取消回复状态,这个行为无法被禁止。如果业务强依赖线程关联,可以在收到用户消息时先判断是否携带正确的
reply_to_message标记,不符合要求就重新发送一条带force_reply标记的消息引导用户在线程内回复。

内容的提问来源于stack exchange,提问作者Joseba
相关产品推荐
相关产品推荐

