首页 > 解决方案 > 如何让我的 Google App Script 在电报机器人中等待答案,然后运行 ​​if 语句?

问题描述

如何让我的 Google App Script 在电报机器人中等待答案并在if之后运行我的语句?

我对代码的想法是:当我输入/survey时,它将运行以下代码,该代码将发布一个问题,“你好吗?”。该脚本将等待我输入任何文本,然后if在输入答案时运行我的语句。

function survey(data){
  var Q1 = {
    'chat_id': data.message.chat.id,
    'text': 'how are you?'
  }
  var method = 'sendMessage';
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(Q1)
  }
  var response = UrlFetchApp.fetch('https://api.telegram.org/bot' + telegramToken + '/' + method, options);

var text = data.message.text;
if(text == ""){
   currentstep = '3'; //need help here
}

标签: javascriptgoogle-apps-scripttelegram-bot

解决方案


您可以使用Promisesasync/await,这样您的IF语句将等待API的响应并在您收到响应后立即执行。

async function survey(data){
  var Q1 = {
    'chat_id': data.message.chat.id,
    'text': 'how are you?'
  }
  var method = 'sendMessage';
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(Q1)
  }
  var response = await UrlFetchApp.fetch('https://api.telegram.org/bot' + telegramToken + '/' + method, options);

var text = data.message.text;
if(text == ""){
   currentstep = '3'; //need help here
}

或者

function survey(data){
  var Q1 = {
    'chat_id': data.message.chat.id,
    'text': 'how are you?'
  }
  var method = 'sendMessage';
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(Q1)
  }
  UrlFetchApp.fetch('https://api.telegram.org/bot' + telegramToken + '/' + method, options).then((data)=>{
var text = data.message.text;
if(text == ""){
   currentstep = '3'; //need help here
}
})
}

推荐阅读