2017-09-17 6 views
0

Je veux des réponses de l'utilisateur de processus et poser la question suivante. J'ai utilisé si ... sinon, mais c'est une mauvaise pratique, comment puis-je utiliser le rendement pour cela?Enquête sur les robots de télégrammes par rendement

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;}); 
    } 

Mais je ne comprends pas comment les appeler régulièrement, pouvez-vous aider?

Répondre

0

Vous pouvez utiliser ForceReply dans toutes les questions et détecter update.message.reply_to_message.text.

0

Thnx @Sean, mais je veux utiliser si c'est possible. J'ai essayé ce code, mais il est fonctionne très étrange

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); 

en réponse i get it

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

et me demandent: "Quel est votre deuxième nom?" encore et encore.