不和谐随机图片机器人垃圾邮件

时间:2020-04-07 15:37:17

标签: javascript discord discord.js

我准备了一个发送随机图像不一致机器人。 bot可以正常运行,但它不仅发送图像,还随机发送文件夹中的所有图像。我需要您的帮助。(可用12张图像,前缀:!!)代码;

const Discord = require('discord.js');
const client = new Discord.Client();
const settings = require('./settings.json');

var prefix = settings.prefix;

client.on('ready', () => {
console.log(`${client.user.tag} ready!`);
});

client.on('message', msg => {
  if (msg.content.toLowerCase() === prefix + 'xgif' )
      number = 12;
      imageNumber = Math.floor (Math.random() * (number -1 + 1)) + 1;
      msg.channel.send ( {files: ["./images/" + imageNumber + ".gif"]})
});

client.login(TOKEN HERE)

1 个答案:

答案 0 :(得分:1)

导致此问题的原因很多。首先,您的if语句作用域不正确。您的代码在功能上等同于:

if (msg.content.toLowerCase() === prefix + 'xgif' ) {
    number = 12;
}
imageNumber = Math.floor (Math.random() * (number -1 + 1)) + 1;
msg.channel.send ( {files: ["./images/" + imageNumber + ".gif"]})

所以发生的事情是数字并不总是设置为12,最后两行用每条消息执行,包括来自机器人本身的消息。你需要: 1.正确确定您的if语句的范围。 2.忽略所有漫游器消息。

client.on('message', msg => {
    if(msg.author.bot) return; // Ignore bots!
    if (msg.content.toLowerCase() === prefix + 'xgif' ) {
        number = 12;
        imageNumber = Math.floor (Math.random() * (number -1 + 1)) + 1;
        msg.channel.send ( {files: ["./images/" + imageNumber + ".gif"]})
    } // End of if scope
}

与Python不同,例如,JavaScript和所有其他C样式语法语言不使用空格来表示作用域。没有括号的if语句仅在作用域中包括下一个语句。