<commit_before>const Discord = require('discord.js'),
    roles = require('../config/roles'),
    moment = require('moment');

moment.locale('de');

exports.Event = function (bot) {
    this.bot = bot;
};

exports.run = (message) => {
    this.onMessage(message, false);
};

exports.onMessage = (message, isUpdate) => {
    const bot = this.bot;

    if (message.author.id == bot.user.id) {
        return;
    }

    if (message.channel.type == 'group') {
        return;
    }

    if (message.author.bot) {
        return
    }

    function handleMessage() {
        addStats(false);

        if (!bot.checkPermissions(roles.user, message.author)) {
            bot.getGuildMember(message.author).addRole(bot.server.roles.get(roles.user));
        }

        if (message.content == "" && message.embeds.length > 0) {
            if (!bot.checkPermissions(roles.moderator, message.author) && bot.checkTrusted(message.author)) {
                try {
                    if (message._edits.length == 0) {
                        bot.respond(message, 'Bitte versende keine Selfbot Embeds auf diesem Server!', true, 10);
                        bot.server.channels.get(bot.config.LOG_CH).send(`${moment().format('LLLL')}\n${message.author} sendete ein Embed in ${message.channel.name}. Nachricht wurde entfernt.`);
                        message.delete();
                    }
                } catch (e) {
                    bot.log('Error removing embed!!\n' + e);
                }
            }
        }
    }

    function handleCommand() {
        let match = /^!([a-zA-Z]+).*/.exec(message.content);

        if (message.channel.type == 'dm') {
            match = /^!?([a-zA-Z]+).*/.exec(message.content);
        }

        if (match) {
            const args = message.content.split(' ').splice(1);
            let cmd = match[1].toLowerCase();

            let cmdObj = null;

            if (bot.commands.has(cmd)) {
                cmdObj = bot.commands.get(cmd);
            } else if (bot.aliases.has(cmd)) {
                cmdObj = bot.commands.get(bot.aliases.get(cmd));
            }

            if (cmdObj == null) {
                return;
            }

            addStats(true);

            if ('handled' in cmdObj.config) {
                if (cmdObj.config.handled == false) {
                    return;
                }
            }

            if ('server' in cmdObj.config) {
                if (cmdObj.config.server == true) {
                    if (message.guild != bot.server) {
                        return bot.respondPm(message, 'Dieser Befehl kann nur auf dem Bronies.de Discord Server ausgeführt werden!');
                    }
                }
            }

            if ('role' in cmdObj.config) {
                if (!bot.checkPermissions(cmdObj.config.role, message.author)) {
                    bot.respondPm(message, 'Du besitzt nicht genügend Rechte um diesen Befehl auszuführen!');

                    if (message.guild == bot.server) {
                        message.delete();
                    }
                    return;
                }
            }

            let trusted = true;
            if ('trusted' in cmdObj.config) {
                trusted = cmdObj.config.trusted;
            }

            if (trusted && !bot.checkTrusted(message.author)) {
                bot.respondPm(message, 'Du musst erst Level 3 erreichen um diesen Befehl nutzen zu können.');

                if (message.guild == bot.server) {
                    message.delete();
                }
                return;
            }

            if ('cooldown' in cmdObj.config) {
                let check = true;

                if ('skip' in cmdObj.config) {
                    if (bot.checkPermissions(cmdObj.config.skip, message.author)) {
                        check = false;
                    }
                }

                if (check) {
                    const cooldownName = cmdObj.help.name + message.author.id;

                    let cooldown = false;

                    if (cooldownName in bot.cooldowns) {
                        cooldown = bot.cooldowns[cooldownName];
                    }

                    if (cooldown) {
                        bot.respondPm(message, 'Du hast diesen Befehl erst vor kurzem ausgeführt. Bitte versuche es später erneut.');
                        if (message.guild == bot.server) {
                            message.delete();
                        }

                        return;
                    }

                    bot.cooldowns[cooldownName] = true;
                    if (bot.config.DEBUG) bot.log("Cooldown " + cooldownName);

                    setTimeout(() => {
                        bot.cooldowns[cooldownName] = false;
                        if (bot.config.DEBUG) bot.log("Cooldown END " + cooldownName);
                    }, cmdObj.config.cooldown * 1000);
                }
            }

            cmdObj.run(bot, message, args);
        } else {
            match = /^\/([a-zA-Z]+).*$/.exec(message.content);

            if (match) {
                bot.respondPm(message, 'Befehle können nur noch mit `!` vorangestellt ausgeführt werden. Beispiel: `' + message.content.replace('/', '!') + '`');
                if (message.channel.type != 'dm') {
                    message.delete();
                }
            } else {
                handleMessage();
            }
        }
    }

    function addStats(isCommand) {
        if (isUpdate || !bot.server.channels.has(message.channel.id)) return;
<commit_msg>check cooldown via time difference<commit_after>const Discord = require('discord.js'),
    roles = require('../config/roles'),
    moment = require('moment');

moment.locale('de');

exports.Event = function (bot) {
    this.bot = bot;
};

exports.run = (message) => {
    this.onMessage(message, false);
};

exports.onMessage = (message, isUpdate) => {
    const bot = this.bot;

    if (message.author.id == bot.user.id) {
        return;
    }

    if (message.channel.type == 'group') {
        return;
    }

    if (message.author.bot) {
        return
    }

    function handleMessage() {
        addStats(false);

        if (!bot.checkPermissions(roles.user, message.author)) {
            bot.getGuildMember(message.author).addRole(bot.server.roles.get(roles.user));
        }

        if (message.content == "" && message.embeds.length > 0) {
            if (!bot.checkPermissions(roles.moderator, message.author) && bot.checkTrusted(message.author)) {
                try {
                    if (message._edits.length == 0) {
                        bot.respond(message, 'Bitte versende keine Selfbot Embeds auf diesem Server!', true, 10);
                        bot.server.channels.get(bot.config.LOG_CH).send(`${moment().format('LLLL')}\n${message.author} sendete ein Embed in ${message.channel.name}. Nachricht wurde entfernt.`);
                        message.delete();
                    }
                } catch (e) {
                    bot.log('Error removing embed!!\n' + e);
                }
            }
        }
    }

    function handleCommand() {
        let match = /^!([a-zA-Z]+).*/.exec(message.content);

        if (message.channel.type == 'dm') {
            match = /^!?([a-zA-Z]+).*/.exec(message.content);
        }

        if (match) {
            const args = message.content.split(' ').splice(1);
            let cmd = match[1].toLowerCase();

            let cmdObj = null;

            if (bot.commands.has(cmd)) {
                cmdObj = bot.commands.get(cmd);
            } else if (bot.aliases.has(cmd)) {
                cmdObj = bot.commands.get(bot.aliases.get(cmd));
            }

            if (cmdObj == null) {
                return;
            }

            addStats(true);

            if ('handled' in cmdObj.config) {
                if (cmdObj.config.handled == false) {
                    return;
                }
            }

            if ('server' in cmdObj.config) {
                if (cmdObj.config.server == true) {
                    if (message.guild != bot.server) {
                        return bot.respondPm(message, 'Dieser Befehl kann nur auf dem Bronies.de Discord Server ausgeführt werden!');
                    }
                }
            }

            if ('role' in cmdObj.config) {
                if (!bot.checkPermissions(cmdObj.config.role, message.author)) {
                    bot.respondPm(message, 'Du besitzt nicht genügend Rechte um diesen Befehl auszuführen!');

                    if (message.guild == bot.server) {
                        message.delete();
                    }
                    return;
                }
            }

            let trusted = true;
            if ('trusted' in cmdObj.config) {
                trusted = cmdObj.config.trusted;
            }

            if (trusted && !bot.checkTrusted(message.author)) {
                bot.respondPm(message, 'Du musst erst Level 3 erreichen um diesen Befehl nutzen zu können.');

                if (message.guild == bot.server) {
                    message.delete();
                }
                return;
            }

            if ('cooldown' in cmdObj.config) {
                let check = true;

                if ('skip' in cmdObj.config) {
                    if (bot.checkPermissions(cmdObj.config.skip, message.author)) {
                        check = false;
                    }
                }

                if (check) {
                    const cooldownName = `${message.author.id}.${cmdObj.help.name}`;

                    let cooldown = false;

                    if (cooldownName in bot.cooldowns) {
                        const cooldown = bot.cooldowns[cooldownName];

                        if (moment().diff(cooldown) < 0) {
                            bot.respondPm(message, `Du hast den Befehl \`${cmdObj.help.name}\` erst vor kurzem ausgeführt. Bitte warte noch ${moment().to(cooldown, true)}.`);
                            if (message.guild == bot.server) {
                                message.delete();
                            }

                            return;
                        }
                    }

                    bot.cooldowns[cooldownName] = moment().add(cmdObj.config.cooldown, 'seconds');
                    if (bot.config.DEBUG) bot.log('Cooldown ' + cooldownName + ' ' + bot.cooldowns[cooldownName]);
                }
            }

            cmdObj.run(bot, message, args);
        } else {
            match = /^\/([a-zA-Z]+).*$/.exec(message.content);

            if (match) {
                bot.respondPm(message, 'Befehle können nur noch mit `!` vorangestellt ausgeführt werden. Beispiel: `' + message.content.replace('/', '!') + '`');
                if (message.channel.type != 'dm') {
                    message.delete();
                }
            } else {
                handleMessage();
            }
        }
    }

    function addStats(isCommand) {
        if (isUpdate || !bot.server.channels.has(message.channel.id)) return;

{'fraction_non_alphanumeric': 0.1283875033762492, 'fraction_numerical': 0.0017106329341856487, 'mean_word_length': 1.307436643124221, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 10, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4072586', 'n_tokens_mistral': 3196, 'n_tokens_neox': 3043, 'n_words': 594}