【问题标题】:Discord Random Image Bot spammingDiscord 随机图像机器人垃圾邮件
【发布时间】:2021-11-24 15:29:19
【问题描述】:

我准备了一个发送随机图像的不和谐机器人。 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)

【问题讨论】:

  • 如何随机发送所有图片?一个随机子集?

标签: javascript discord discord.js


【解决方案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"]})

所以发生的情况是 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 语句仅包含其范围内的下一条语句。

【讨论】:

    猜你喜欢
    • 2014-05-19
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2014-08-12
    • 2011-07-05
    • 2012-06-12
    • 2014-09-26
    相关资源
    最近更新 更多