电报机器人获得回复

时间:2021-05-20 02:19:22

标签: node.js telegram telegram-bot

如何让我的机器人在不使用 force_reply 的情况下接收响应?像 botFather 这样的东西吗?

one

假设我已经向用户发送了这样的消息:

bot.sendMessage(chatId, 'What is your name?', { parse_mode: 'HTML' });

现在如何获得用户响应?

2 个答案:

答案 0 :(得分:0)

如果没有 force_reply 的帮助,您将需要编写一些自定义逻辑。我已经在我的自定义机器人中实现了这个:

  1. 向用户 bot.sendMessage() 发送问题并记住 ID
  2. 等待消息bot.on('message')
  3. 检查我们是否正在等待该用户的回复
  4. 相应回复
// Create bot
const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot('XXXXXXXX:AAEibBwftjTEKuYd9d2X0ACeyyzTk4DLe60', {
    polling: true
});

// List of id's we're waiting for
const wait = [];

// Hardcoded chat id
const chatId = 1234567;

// Ask and add to wait list
bot.sendMessage(chatId, 'What is your name?', { parse_mode: 'HTML' });
wait.push(chatId);

// On message
bot.on('message', (msg) => {

    // Check we're waiting on this user
    if (wait.includes(msg.chat.id)) {

        // Send reply
        bot.sendMessage(chatId, 'Your name: ' + msg.text );

        // Remove from wait list
        wait.splice(wait.indexOf(msg.chat.id), 1);
    } else {

        // Normal message; notify user
        bot.sendMessage(chatId, 'Hi! I\'m not expecting a reply from you! How can I help?');
    }
});

Example


注意:这只是一个例子!该代码可以扩展为包括多项检查,并可能会说明用户正在回复什么消息。

答案 1 :(得分:0)

您所需要的只是一个与用户私下交谈的聊天机器人。有很多电报聊天机器人库可以监听对话并做出相应的响应,我个人使用电报库,它提供了全方位的电报 API。

为了使其更智能,您可以将其与 NLP、dialogflow (google) 或 Wit.ai (facebook) 集成。我更喜欢更直接的facebook

您可以让机器人执行特定任务,例如提供天气预报、讲笑话或问候

您可以在这里查看示例:

https://youtu.be/YIeEermeXEU 源代码 https://github.com/simple3838/node-telegram-witai-lesson1