我正在尝试为Discord服务器添加 image命令,但是它一直说'未定义选项'。我正在使用Visual Studio代码。
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.on('message', message =>{
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command == 'ping'){
client.commands.get('ping').execute(message, args);
}
if (command == 'youtube'){
client.commands.get('youtube').execute(message, args);
}
if (command == 'instagram'){
client.commands.get('instagram').execute(message, args);
}
});
client.commands = new Discord.Collection();
client.on('message', message => {
let args = message.content.substring(PREFIX.length).split(" ");
switch (args[0]) {
case 'image':
image(message);
break;
}
});
function image(message){
var options = {
url: "http://results.dogpile.com/serp?qc=images&q=" + "cursed images",
method: "GET",
headers: {
"Accept": "text/html",
"User-Agent": "Chrome"
}
}};
client.on('ready', () =>{
console.log('This bot is online!');
})
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 :(得分:0)
image
函数是这样的:
function image(message){
var options = {
url: "http://results.dogpile.com/serp?qc=images&q=" + "cursed images",
method: "GET",
headers: {
"Accept": "text/html",
"User-Agent": "Chrome"
}
}
};
它在函数范围内定义了option
,并且什么也不做。因此,option
仅在该函数中可访问。尝试将client.on('ready', () => ...)
移到顶部,并将所有代码从function image(message) { ...}
替换为以下代码:
function image(message) {
var options = {
url: 'http://results.dogpile.com/serp?qc=images&q=' + 'cursed images',
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)]);
});
}