我正在尝试使用discord.js创建一个机器人。它显示没有错误,并且可以联机并且完美运行。但是,当我尝试运行命令时,该机器人什么也没说,甚至没有错误消息。我的代码在这里:
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)]);
});
}
答案 0 :(得分:1)
首先,您错误地定义了args
,您需要split()
使用空格,slice()
prefix
和trim()
空格是这样的:>
const args = message.content
.slice(PREFIX.length) // gets rid of the prefix
.trim() // removes whitespaces
.split(/ +/g) // splits using spaces
然后,因为已弃用,您需要使用send()
而不是sendMessage()
。
case "ping":
message.channel.send("Pong!")
break;
答案 1 :(得分:0)
您的错误很简单,在var args = ...
中,您使用split
分割了每个字符。要工作,您只需要分割空格。只需在split
函数中添加一个空格即可。
var args = message.content.substring(PREFIX.length).split(" ");
此外,message.channel.sendMessage
不再起作用,您需要改为使用message.channel.send
。
我进行了更改,您的漫游器运行完美。