【发布时间】:2021-08-04 07:17:46
【问题描述】:
当我执行我的机器人时,我有一个只工作一次的事件处理程序。这应该阻止任何网站链接到特定频道并将 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 === 'CHANNELID'){
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 ="CHANNELID"
message.reply(`You can not send link here! ????\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));
}
}*/
【问题讨论】:
-
之后还会发出 Message 事件吗?
-
是的,我没有收到任何错误,其他一切正常
-
恢复到修订版一,因为编辑添加了原始帖子中不存在的代码。
-
您的消息处理程序是否可能被添加到
client.once而不是client.on? -
我尝试只在索引文件中使用
client.on以及client.on('message', message => {内部
标签: javascript discord.js