首页 > 解决方案 > 电报 - 节点 API。当我触发特定的正则表达式匹配时,如何获取我回复的用户的用户 ID?

问题描述

假设聊天中有一个用户消息,而我作为另一个用户执行以下操作

回复他的文字:/tip 50

我基本上想以某种方式接收我已回答的用户 (他的 id) 和第二个参数。我似乎无法这样做,因为 msg 不包含您回答的用户的 ID

我现在真的什么都没有,这是我的代码

    `bot.onText(/\/tip/,(msg,res) => {
    var tg_chat_id = msg.chat.id
    var tg_ser_id = msg.from.id
    console.log(res)
    console.log(msg)
    // bot.onReplyToMessage(msg.chat.id, msg.from.id)

})`

我正在考虑记录 msg 并在那里找到我回答的用户 ID。但我看不到它。也许我可以使用 bot.onReplyToMessage 来实现它,但我不明白。

标签: javascriptnode.jstelegramnode-telegram-bot-api

解决方案


要在方法中捕获传递的参数onText,您需要正确组合正则表达式并将匹配传递给回调函数。要回复特定消息,请将reply_to_message_id选项传递给sendMessage方法,如下所示:

bot.onText(/\/tip (.+)/, (msg, match) => {
    let chatId = msg.chat.id;
    let messageId = msg.message_id;
    let tipValue = match[1];
    bot.sendMessage(chatId, `You tipped with value: ${tipValue}`, {
        reply_to_message_id: messageId
    });
});

这将导致以下机器人的回复:

在此处输入图像描述


推荐阅读