首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node-telegram-bot-api顺序执行函数

使用node-telegram-bot-api顺序执行函数
EN

Stack Overflow用户
提问于 2019-02-23 21:54:53
回答 2查看 987关注 0票数 2

当我尝试发送关于我的年龄的信息时,它会询问我的Gen,然后是我的身高。如果我写我的身高,它是问我的年龄的2倍和1倍。如何让它像这样工作:它应该询问一些东西。然后,如果我回答了一些问题,但答案不是很好,它应该再次问这个问题,如果答案是好的,它应该使用相同的算法提出新的问题。

代码语言:javascript
复制
let weight, height, age, dailyNorm, A, proteine, fat, glucide, gen;
let low=1.2, small=1.4, middle=1.6, big=1.7;


const TelegramBot = require('node-telegram-bot-api');
const token = '734206894:... '; 
const bot = new TelegramBot(token, {polling: true, 
                                       onlyFirstMatch:true, }); 

bot.onText(/\/start/, (msg) => { 
    bot.sendMessage(msg.chat.id,"Bot activated?" , { "reply_markup": { 
        "keyboard":[["Calculate?" ], ["Report?"]] 
    }});
    console.log (msg.text);
});

function dataGen(a){
    bot.sendMessage(a.chat.id,"Your gen(?-m,?-f)?"); console.log (1)
    bot.on("message", (msg) => { 
     if (msg.text=="m"){ gen="m"; dataAge(msg);}  
     else if (msg.text=="f"){ gen="f"; dataAge(msg);} 
     else { dataGen(msg);} 
     console.log (2)
    });
} 

function dataAge(b){
    bot.sendMessage(b.chat.id,"Your age??");
EN

回答 2

Stack Overflow用户

发布于 2019-03-10 03:58:56

对于发送顺序问题:

代码语言:javascript
复制
var answerCallbacks = {};

bot.on('message', function (message) {
    var callback = answerCallbacks[message.chat.id];
    if (callback) {
        delete answerCallbacks[message.chat.id];
        return callback(message);
    }
});

bot.onText(/questions/, function (message,match) {
    bot.sendMessage(message.chat.id, "Enter your name").then(function () {
        answerCallbacks[message.chat.id] = function (answer) {
            var name = answer.text;
            bot.sendMessage(message.chat.id, "Enter your address").then(function () {
                answerCallbacks[message.chat.id] = function (answer) {
                    var address = answer.text;
                    bot.sendMessage(message.chat.id, "Enter your phone ").then(function () {
                        answerCallbacks[message.chat.id] = function (answer) {
                            var phone = answer.text;
                            bot.sendMessage(message.chat.id, name + address + phone + " saved!");
                        }
                    });
                }
            });
        }
    });
});
票数 0
EN

Stack Overflow用户

发布于 2019-09-24 19:12:13

或者作为一个函数:

代码语言:javascript
复制
const answerCallbacks = {};

bot.on("message", function(msg) {
  const callback = answerCallbacks[msg.chat.id];
  if (callback) {
    delete answerCallbacks[msg.chat.id];
    return callback(msg);
  }
});

const askQuestion = async (chatId, question) => {
  await bot.sendMessage(chatId, question);
  return new Promise(fullfill => {
    answerCallbacks[chatId] = msg => {
      if (msg.text[0] !== "/") {
        fullfill(msg);
      }
    };
  });
};

然后您可以简单地使用:

代码语言:javascript
复制
const answer = await askQuestion(chatId, 'Tell me something good!')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54842331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档