javascript - Discord 随机图像机器人垃圾邮件

标签 javascript discord discord.js

我准备了一个发送随机图像的不和谐机器人。机器人工作顺利,但它不只是发送图像,而是随机发送文件夹中的所有图像。我需要你的帮助。(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/

相关文章:

Javascript顺序打印到文件

python - 模块未找到错误 : No module named 'cogs'

javascript - 如何摆脱这个ffmpeg?

javascript - lodash 深度嵌套数组过滤器

javascript - 删除index.html GWT

javascript - 如何将自定义 ID 与用户名关联起来

node.js - 有没有办法比较两个成员(member)的排名?

javascript - 无法读取未定义的属性“id”

javascript - THREE.OBJLoader 蒙上了阴影?

Python Discord,检查成员(member)状态