我准备了一个发送随机图像的不和谐机器人。机器人工作顺利,但它不只是发送图像,而是随机发送文件夹中的所有图像。我需要你的帮助。(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)
最佳答案
导致这个问题的原因有很多。首先,您的 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"]})
所以发生的情况是 number 并不总是设置为 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 语句仅包含其范围内的下一个语句。
关于javascript - Discord 随机图像机器人垃圾邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61083800/