Discord.js 事件在运行后只工作一次

时间:2021-05-14 03:49:15

标签: javascript discord.js

我有一个事件处理程序,当我执行我的机器人时它只工作一次。这应该阻止任何网站链接到特定频道,并将 message.content 发送到另一个允许链接的频道,但这仅在有人第一次发送链接时有效 进入我的公会(服务器)。

Obs:我在索引文件中有一个事件/命令处理程序。

有什么办法可以解决这个问题并每次都阻止链接吗?


module.exports = {
    name: 'message',
    execute(message) {
        console.log('\x1b[31m', `${message.author.tag}`,'\x1b[0m', `in`, '\x1b[34m', `#${message.channel.name}: `, '\x1b[33m', `${message.content}`, '\x1b[0m');
        
        //bloquear links
        if (message.channel.id === '390214264495013890'){
        function is_url(str) {
            const regexp = /^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;
            if(regexp.test(str)) {
                    return true;
                } else {
                    return false;
                }                    
                }
                if(is_url(message.content) === true) {
                    message.delete()
                    message.channel.id ="804920613696307240"
                    message.reply(`You can not send link on Zip-Zop! ?\n${message.content}`)
                }
            }
    },
};


/*This is my Event handler into index file
const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));

    for (const file of eventFiles) {
const event = require(`./events/${file}`);
    if (event.once) {
        client.once(event.name, (...args) => event.execute(...args, client));
        } else {
        client.on(event.name, (...args) => event.execute(...args, client));
        }
    }*/

1 个答案:

答案 0 :(得分:0)

我发现 message.channel.id ="CHANNELID" 导致了这个问题。我暂时删除了这一行和 message.reply 行。