尝试为我的不和谐服务器添加一个图像命令,但它一直说“未定义选项”

时间:2020-07-06 19:09:05

标签: discord.js

我正在尝试为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)]);
    });

1 个答案:

答案 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)]);
  });
}