#javascript #discord.js
#javascript #discord.js
Вопрос:
Я пытаюсь сделать свой discord-бот таким, чтобы он отображался в консоли всякий раз, когда пользователь вводит определенные слова. Код работает полностью нормально, если первое слово содержит слова, для которых установлено значение flag, но если кто-то добавит «Ты п ****», он не будет обнаружен, а просто «п ****» помечает из-за этого у него также возникают проблемы с пометкой, когда несколько слов, которые должныговорят, что они помечены.
client.flags = new Discord.Collection();
const flagFiles = fs.readdirSync('./flag/').filter(file => file.endsWith('.js'));
for(const file of flagFiles){
const flag = require(`./flag/${file}`);
client.flags.set(flag.name, flag);
}
client.on("message", function(message){
console.log("Channel:" color.blue(message.channel) " " "Author:" color.blue(message.author) " " "Message:" color.blue(message.content))
if (message.author.bot) return;
const flagwords = ["spam","Spam","Nig", "nig", "N19", "n19"];
const args1 = message.content.slice(flagwords).split(/ /);
const msg = args1.shift().toLowerCase();
if (msg.includes("spam") || msg == "spam" || msg == "spam" || msg.includes("spam")) {
client.flags.get("spam").execute(message, args1);
}
if (msg.includes("nig") || msg == "nig" || msg == "nig" || msg.includes("nig")) {
client.flags.get("nigga").execute(message, args1);
}
if (msg.includes("n19") || msg == "n19" || msg == "n19" || msg.includes("n19")) {
client.flags.get("nigga").execute(message, args1);
}
});
Комментарии:
1. что
message.content
содержит и кем вы ожидаетеmsg
быть?2. message.content — это содержимое любого сообщения, отправленного любым пользователем в discord, в котором находится бот. msg — принимает помеченное слово, которое было выделено из сообщения, и делает все символы строчными
Ответ №1:
Используйте регулярное выражение, чтобы находить все совпадения в каждый момент, когда пользователь отправляет сообщение.
Попробуйте что-то вроде этого:
let message = "niggers, nigger spam 1234. niga N19 nig"
const flagWords = [/spam/g, /Spam/g, /Nig/g, /nig/g, /N19/g, /n19/g];
flagWords.forEach(checkMessage);
function checkMessage(item, index) {
if (message.match(item) != null) console.log(`Message: '${message}' found: '${message.match(item)}'`);
}