2017-09-17 3 views
0

Ich möchte Prozess Benutzer Antworten und stellen Sie die nächste Frage. Ich habe verwendet, wenn ... sonst, aber es ist schlechte Praxis, wie kann ich Ausbeute dafür verwenden?Telegram Bot Umfrage nach Ertrag

function* gen() { 
let ask1 = yield bot.sendMessage(id, "What is Your fname?"); 
    bot.on("message", msg => { 
     fname = msg.text; 
    }); 

    let ask2 = yield bot.sendMessage(id, "What is Your second name?"); 
     bot.on("message", msg => { 
     sname = msg.text;}); 
    } 

Aber ich verstehe nicht, wie man sie konsequent nennt, können Sie helfen?

Antwort

0

Sie können ForceReply in jeder Fragen verwenden und erkennen update.message.reply_to_message.text.

0

Thnx @Sean, aber ich möchte Yeild verwenden, wenn es möglich ist. Ich habe versucht, diesen Code, aber es funktioniert sehr seltsam

function* gen() { 
    let ask1 = yield two() 

    console.log(ask1); 

    let ask2 = yield three() 

    console.log(ask2); 
} 

let generator = gen(); 

function two() { 
bot.sendMessage(id, "What is Your fname"); 
    bot.on("message", msg => { 
     fname = msg.text; 
    console.log("fname - "+fname); 
    generator.next(three()); 
    return fname; 
    }); 
} 

function three() { 
bot.sendMessage(id, "What is Your second name?"); 
    bot.on("message", msg => { 
     sname = msg.text; 
    console.log("sname - "+sname); 
    generator.next(success()); 
    return sname; 
    }); 
} 

function success() 
{console.log(fname+sname); 
console.log(generator.next().done);} 


console.log(generator.next().value); 

in Antwort ich es bekommen

fname - Serg 
undefined 
fname - Serg 
undefined 
sname - Pavlov 
SergPavlov 
true 
sname - Pavlov 
SergPavlov 
true 

und fragen mich: „Was Ihr zweiter Name?“ wieder und wieder.