#discord #discord.js
#Discord #discord.js
Вопрос:
Я пытаюсь создать команду, которая дает пользователю роль. Раньше это работало, но не просто дает боту роль.
module.exports = {
name: "addevent",
description: "Add the event ping role to a user",
async run(client, message, args) {
const { member } = message;
if (message.member.roles.cache.has('793222158981529621')) {
const { member } = message;
message.channel.send(`${member} You already have this role.`)
}
if (message.channel.id !== '793224633759432755') return;
member.roles.add('793222158981529621')
message.channel.send(`${member} Added the event ping role.`)
}
}
Это также происходит с моей командой level, которая должна проверять уровень пользователя. Он проверяет уровень бота, а не пользователя.
Ответ №1:
let role = message.guild.roles.cache.find(r => r.name === "Role Name Here");
if (message.channel.id !== 'Channel ID Here') return;
if (message.member.roles.cache.has(role.id)) {
return message.channel.send(`${message.member} You already have this role.`)
}
message.member.roles.add(role);
message.channel.send(`${message.member} Added the event ping role.`);
В моем примере есть переменная, role
которая находит роль по ее имени, поэтому вы должны указать там имя роли. Ваш if-оператор с message.channel.id
помощью был понятен и является хорошим способом получить роль только в одном канале. Второй оператор if просто спрашивает, есть ли у пользователя уже эта роль (не забывайте: в .has()
вам нужно указать идентификатор, в этом случае это легко сделать role.id
). В любом случае, если у пользователя есть эта роль, он отправит сообщение и вернется. В противном случае он добавит роль пользователю, а также отправит сообщение.
Комментарии:
1. > Я не знаю, почему вы хотели, чтобы участник был сообщением?
const { member } = message;
использует узел. Деконструкция Js. Это то же самое, что и вconst member = message.member;
противном случае хороший ответ.2. О, это приятно знать, спасибо, я удалил это из своего ответа сейчас.
3. Я попробовал это, и это все еще дает боту роль.
4. В итоге я исправил ошибку, по-видимому, это было из-за одного из установленных мной пакетов.