Discord Случайное изображение Бот спам - PullRequest
0 голосов
/ 07 апреля 2020

Я подготовил рассылку случайных картинок разногласий бота. Бот работает без сбоев, но вместо того, чтобы просто отправлять изображение, он случайным образом отправляет все изображения в папку. Мне нужна ваша помощь. (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 Ответ

1 голос
/ 07 апреля 2020

У вас есть многочисленные проблемы, ведущие к этому. Во-первых, ваше заявление 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 без скобок включает в себя только один следующий оператор.

...