当前位置: 首页 > 知识库问答 >
问题:

不一致jsbot命令不工作。如何解决?

苏墨竹
2023-03-14

我正在尝试创建一个不和谐的机器人。js。它显示没有错误,可以联机并完美运行。但是,当我尝试运行命令时,bot不会说任何话,甚至不会发出错误消息。我的代码在这里:

const discord = require('discord.js');
var cheerio = require('cheerio');
var request = require('request');
const bot = new discord.Client();
const PREFIX = "//";

bot.on('ready', () => {
  console.log('CherryBot is online!');

})

bot.on("message", (message) => {
  if (message.author.equals(bot.user)) return;

  if (!message.content.startsWith(PREFIX)) return;

  var args = message.content.substring(PREFIX.length).split("");

  switch (args[0].toLowerCase()) {
    case "ping":

      message.channel.sendMessage("Pong!")
      break;

    case "cherry":
      image(message);

      break;
  }
});

function image(message) {

  var options = {
    url: "http://results.dogpile.com/serp?qc=images&q=" + "cherry fruit"
    , method: "GET",
    headers: {
      "Accept": "text/html",
      "User-Agent": "Chrome"
    }
  };

  request(options, function (error, response, responseBody) {
    if (error) {
      return;
    }

    $ = cheerio.load(responseBody);

    var links = $(".image a.link");

    var urls = new Array(links.length).fill(0).map((v, i) => links.eq(i).attr("href"));

    console.log(urls);

    if (!urls.length) {

      return;
    }

    // Send result
    message.channel.send(urls[Math.floor(Math.random() * urls.length)]);
  });
}

共有2个答案

钮誉
2023-03-14

您的错误很简单,在var args=您使用split分割每个字符。要工作,只需拆分空间。只需在split函数中添加一个空格即可。

var args = message.content.substring(PREFIX.length).split(" ");

此外,message.channel.sendMessage不再工作,您需要使用message.channel.send

我做了改变,你的机器人工作得很好。

钮长恨
2023-03-14

首先,您定义的args错误,需要使用空格split()slice()前缀trim()空格,如下所示:

const args = message.content
          .slice(PREFIX.length) // gets rid of the prefix
          .trim() // removes whitespaces
          .split(/ +/g) // splits using spaces

然后您需要使用send()而不是sendMessage(),因为它已被弃用。

js prettyprint-override">case "ping":
    message.channel.send("Pong!")
break;

 类似资料:
  • 我得到了一个unban命令代码,在控制台中出现以下错误: (节点:9348)未处理的PromisejectionWarning:TypeError:无法读取未定义的at对象的属性“member”。在客户端执行(C:\Users\19nik\Documents\GitHub\bot project\commands\unban.js:9:22)。(C:\Users\19nik\Documents\G

  • 我已经下载了jdk 1.8.0\u 131 当我打开命令提示符并编写以下命令-java-version时,它会给出输出 但是当我编写以下命令时:javac-version它会给我输出 我已经编辑了系统变量路径-C:\Progra~1\Java\jdk1.8.0_131\bin; 当我执行以下命令时:"C:\Program Files\Java\jdk1.8.0_131\bin\javac"-ver

  • 我目前正试图将静音功能编程到discord机器人上。它已启用服务器权限“静音成员”。 这是每当我调用mute命令时运行的代码: 因此,此代码的连续调用应该切换为静音,但message.channel.send.每次都会发送false,表明该成员从未静音。我不清楚静音功能是如何与不和谐一起工作的。我在某处读到它是基于角色的——如果是这样,那么setMute()命令的意义是什么? 文档:https:/

  • 上面的代码正在运行。 我没有得到任何错误,但我也希望机器人显示他们是afk的原因,当他们提到。有人能帮忙吗?

  • 我面临commandButton的问题,它只有在类型为submit时才起作用。有没有人可以看一下,让我知道是否有解决办法?下面的代码非常简单,并有足够的建议来说明我需要什么。方法test()未执行。方法runSubmit已成功执行。 我需要测试方法在没有提交的情况下执行,因为原始页面确实在提交期间执行了验证,test()方法必须在没有提交的情况下执行,因为这是提交之前的一个初步操作。 我正在使用P

  • 我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!