创建聊天机器人时交替显示消息

Alternating messages on chatbot creation

我正在使用 github(https://github.com/Androz2091/insta.js.git) 上可用的库为 Instagram 使用 Node JS 做一个聊天机器人。我目前正在通过在线 replit 平台测试该功能,我正在从 Instagram 用户那里获取消息并通过 url 将其发送到回复服务

我遇到了机器人的问题。它必须遵循一个消息结构,但是,这个结构经常被切换。

我在聊天中发送:

-嗨

机器人在控制台响应:

-您好!

-有什么可以帮到您的吗?

但是在聊天中他是这样回复的:

-有什么可以帮到您的吗?

-您好!

下面是我用来遍历接收和发送消息的数组的代码

我试过用switch case来解决问题,还是一样。

node-fetch(`instagram?mensage=${message}&user=${message.author.fullName}&session=${client.user}`)
  .then(res => res.json())
  .then(json => {
    for (var i = 0; i < json.length; i++) {


      message.chat.sendMessage(json[i].text || json[i].title);
      console.log(json[i].text || json[i].title)


      for (var key in json[i]) {

      /* switch case
     switch(json[i][key]){
       case json[i].text:
        message.chat.sendMessage(json[i].text);
        break;
       case json[i].title:
        message.chat.sendMessage(json[i].title);
        break;
      }*/

        if (json[i][key].length == 3) {
          for (var j = 0; j < json[i][key].length; j++) {

            message.chat.sendMessage(json[i][key][j].label);
            console.log(json[i][key][j].label);

          }
        }

有谁知道为什么会这样? 我已经谢谢你了。

sendMessage returns 承诺,但您将其用作普通功能。

您可以在此处阅读 javascript 承诺 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises

在您的代码中,它应该看起来像这样

...
.then(async json => {
    for (var i = 0; i < json.length; i++) {
        await message.chat.sendMessage(json[i].text || json[i].title);
        ...
    }
});