Функция спам-бота у Discord не работает - PullRequest
0 голосов
/ 17 февраля 2019

Итак, я пытался создать функцию защиты от спама на бот-диске, но просмотрел мой код, и все это работает, но это не так.Я новичок в javascript, поэтому я не уверен, что не так ... Все остальное работает на моем боте, только не это.Я только вставляю часть своего кода с антиспамом:

const Discord = require('discord.js');
 const client = new Discord.Client();
client.on('ready', () => {
 console.log(`Logged in as ${client.user.tag}!`);
 });
function antispam() {
var spam = 0;
}
client.on('ready', () => {
setInterval(antispam(), 5000);
 });
client.on('message', msg => {
if (spam > 10) {
client.channels.get('546117125702680596').send('Hey! You are sending messages too quickly!');
}
});
function antispam() {
var spam = 0;
}
client.on('message', msg => {
var spam = spam + 1;
});
client.login('token');

Помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 18 февраля 2019

Привет и добро пожаловать в Stack Overfow!

Несколько проблем здесь:

  • Вы объявляете antispam дважды, объявляете функции всегда один раз
  • Ваш интервалничего не делаетОн вызывает antispam, что создает spam внутри области antispam, что удаляется сразу после того, как antispam заканчивает выполнение
  • Вы объявляете client.on('message'... дважды.Опять же, просто сделайте это один раз
  • Вы объявляете `client.on ('ready' ...) дважды.
  • Если вы увеличите spam внутри client.on('message'...), то spamпеременная будет бесполезна, как и в antispam.Вы нигде не получите к нему доступ (вы также не смогли бы, если бы попытались)

Итак, вот решение, которое должно работать:

// To count the "spam level"
const spam = 0;

// Increase spam everytime someone writes something
client.on('message', msg => {
    // Check if spam level is already too high
    if (spam > 10) {
        client.channels.get('546117125702680596').send('Hey! You are sending messages too quickly!');
    } else {
        spam++;
    }
});

// Decrease the spam level, otherwise nobody can't send message until the bot gets restarted
setInterval(() => {
    if (spam > 0) {
        spam--;
    }
}, 10000); // Let's decrease it every 10 seconds 

Весь ваш код:

const Discord = require('discord.js');
const client = new Discord.Client();
// To count the "spam level"
const spam = 0;

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

// Increase spam everytime someone writes something
client.on('message', msg => {
    // Check if spam level is already too high
    if (spam > 10) {
        client.channels.get('546117125702680596').send('Hey! You are sending messages too quickly!');
    } else {
        spam++;
    }
});

// Decrease the spam level, otherwise nobody can't send message until the bot gets restarted
setInterval(() => {
    if (spam > 0) {
        spam--;
    }
}, 10000); // Let's decrease it every 10 seconds 

client.login('token');
...