#javascript #node.js #discord #discord.js
#javascript #node.js #Discord #discord.js
Вопрос:
Моему боту нужно игнорировать сообщения людей с определенной ролью.
Я написал этот код, и он должен работать, но каждая команда в этом фрагменте кода не работает.
Я не получаю никаких сообщений об ошибках, и мой бот работает нормально над этим фрагментом кода. Что мне нужно изменить?
client.on('message', message => {
if (message.guild.roles.cache.find(r => r.name === "ROLE NAME")) {return;}
})
Любая помощь приветствуется.
Ответ №1:
Вы проверяете, есть ли у Guild
него Role
имя ROLE NAME
, а не фактическое GuildMember
.
GuildMember
имеет свойство с именем roles
, которое содержит все роли GuildMember
.
client.on("message", message => {
if (message.member.roles.cache.find(role => role.name == "ROLE NAME")) return false;
// Execute your commands here.
});
Комментарии:
1. Я не знаю, что я делаю не так, но когда я изменил свой код на это, я начал получать ошибку TypeError: не удается прочитать свойство ‘роли’ null
2. Команда должна выполняться на сервере, а не в DMS.
3. бот выполняется на сервере, и я не уверен, что вызывает проблему, я запускаю бота на версии 12.3.1, если это поможет
4. Не могли бы вы предоставить весь свой код? Я не уверен, что вызывает проблему.
Ответ №2:
Вы должны проверять, имеет ли GuildMember
Role
, а не Guild
.
client.on("message", message => {
if (message.member.roles.cache.some(role => role.name == "ROLE NAME")) return;
// code...
});
Вы можете использовать .some()
метод, который проверит, проходит ли какой-либо элемент в Collection
(роли участника) заданный вами тест. В этом случае проверяется, равно ли имя роли ROLE NAME