簡體   English   中英

未處理的拒絕錯誤:ETELEGRAM:400 錯誤請求:消息文本為空

[英]Unhandled rejection Error: ETELEGRAM: 400 Bad Request: message text is empty

我是電報機器人和 node.js 的新手,我正在開發一個簡單的機器人,它調用 api url 來獲取 json 個對象,但是我在命令中遇到了這個錯誤。 這是命令的代碼:

bot.onText(/\/fixtures/, (msg) => {
  const chatId = msg.chat.id;
  var out = "";

  function myFunction(arr) {
      var i;
      for(i = 0; i < arr.length; i++) {
          out += arr[i].name + "--";
      }
  }

  request.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
          var myArr = JSON.parse(this.responseText);
          myFunction(myArr);
      }
  };

  request.open("GET", url, true);
  request.send();

  bot.sendMessage(chatId, out);

這是完整的錯誤:

Unhandled rejection Error: ETELEGRAM: 400 Bad Request: message text is empty
at request.then.resp (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\node-telegram-bot-api\src\telegram.js:280:15)
at tryCatcher (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\promise.js:512:31)
at Promise._settlePromise (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\promise.js:569:18)
at Promise._settlePromise0 (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\promise.js:614:10)
at Promise._settlePromises (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\promise.js:694:18)
at _drainQueueStep (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\async.js:138:12)
at _drainQueue (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\async.js:131:9)
at Async._drainQueues (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\Utente1\Desktop\MyFootballBot\node_modules\bluebird\js\release\async.js:17:14)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)

ajax請求回復成功后,您應該發送您的消息。 移動bot.sendMessage(chatId, out); onReadyStateChange回調中:

request.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var myArr = JSON.parse(this.responseText);
        myFunction(myArr);
        bot.sendMessage(chatId, out);
    }
};

您將需要閱讀從電報機器人獲得的文本。 一種方法是:

var out = msg.text;

所以你會有這個:

 bot.onText(/\/fixtures/, (msg) => {
 const chatId = msg.chat.id;
  var out = msg.text;

  function myFunction(arr) {
      var i;
      for(i = 0; i < arr.length; i++) {
          out += arr[i].name + "--";
      }
  }

 request.onreadystatechange = 
function() {
      if (this.readyState == 4 && 
      this.status == 200) {
        var myArr = JSON.parse(this.responseText);
        myFunction(myArr);
      }
  };

  request.open("GET", url, true);
  request.send();

  bot.sendMessage(chatId, out);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM