当我尝试发送关于我的年龄的信息时,它会询问我的Gen,然后是我的身高。如果我写我的身高,它是问我的年龄的2倍和1倍。如何让它像这样工作:它应该询问一些东西。然后,如果我回答了一些问题,但答案不是很好,它应该再次问这个问题,如果答案是好的,它应该使用相同的算法提出新的问题。
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??");发布于 2019-03-10 03:58:56
对于发送顺序问题:
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!");
}
});
}
});
}
});
});发布于 2019-09-24 19:12:13
或者作为一个函数:
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);
}
};
});
};然后您可以简单地使用:
const answer = await askQuestion(chatId, 'Tell me something good!')https://stackoverflow.com/questions/54842331
复制相似问题