【问题标题】:Alternating messages on chatbot creation在聊天机器人创建时交替显示消息
【发布时间】:2021-12-09 12:03:32
【问题描述】:

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

我有一个难题,那就是机器人的答案。它必须遵循消息结构,但是,这种结构经常被切换。

我在聊天中发送:

-嗨

机器人在控制台中响应:

-你好!

-有什么可以帮助你的吗?

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

-有什么可以帮助你的吗?

-你好!

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

我尝试使用开关盒来尝试解决问题,但它仍然保持不变。

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

          }
        }

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

【问题讨论】:

    标签: node.js instagram chatbot


    【解决方案1】:

    sendMessage 返回 Promise,但您将其用作普通函数。

    您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises 阅读有关 javascript 承诺的信息。

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

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

    【讨论】:

    • 我做了这个调整,它真的奏效了!我测试异步函数的方式完全不同。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    相关资源
    最近更新 更多