Бот Discord, который позволяет участникам назначать роли другим участникам

#discord #discord.js

Вопрос:

Я ОЧЕНЬ новичок в кодировании на JavaScript и пытаюсь создать очень простого бота для события, которое я планирую на сервере Discord.

В основном все, что он должен сделать, это назначить роль упомянутому участнику (только первому участнику), если у упомянутого участника нет роли, установленной в массиве.

 const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
const ignoredRoles = ["Overseer, Staff, Bots"],
    mutedRole = "Dead";
client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`) });
client.on("message", (message) => {
    if (message.content.startsWith("!kill")) {
        let member = message.mentions.members.first();
        if (!member)
            return message.channel.send('You forgot to mention who to kill');
        if (member.roles.find(r => ignoredRoles.includes(r.name)))
            return message.channel.send(`${member.toString()} is not participating in the event!`);
        if (member.roles.find(r => r.name == mutedRole))
            return message.channel.send(`${member.toString()} user is already dead!`);
        member.roles.add(mutedRole)
        message.channel.send(`${member.toString()} has been eliminated!`);
    }
});
client.login('token.env');
 

Хотя сам код не выдает никаких ошибок (бот входит в систему и выводит состояние готовности), каждый раз, когда я пытаюсь вызвать бота, он абсолютно ничего не делает. Я не думаю, что мои навыки достаточно хороши, чтобы разобраться в этом самостоятельно, поэтому любая помощь будет высоко оценена! Спасибо!

Ответ №1:

Вам нужно будет сделать это в 4 этапа:

Step 1(Get user and ID at the same time):

 //this'll fetch the first user mentioned, ".id" will return user's id
let member = message.mentions.users.first().id;
 

Step 2(Fetch the role):

 //replace [Role ID] by role's actual ID.
let role = message.guild.roles.cache.find(r => r.id === "[Role ID]");
 

Step 3:(Check if user has a role)

 if (message.member.roles.cache.find(role)){
  //user is having role, tell them that they already have the role.
}
 

Step 4:(Add role to member, continue this after step 3)

 else{
  // Add role to the member
  member.roles.add(role);
}
 

Окончательный Код:

 let member = message.mentions.users.first().id;
let role = message.guild.roles.cache.find(r => r.id === "[Role ID]");

if (message.member.roles.cache.find(role)){
  //user is having role, tell them that they already have the role.
} else {
  // Add role to the member
  member.roles.add(role);
}
 

Пожалуйста, проверьте discord.js официальные документы, вы можете найти все, что связано с discord.js вот так.

Комментарии:

1. Я попытался реализовать код, который вы отправили сюда, но он, похоже, устарел. Это не сработало из-за … некоторых . Может быть, это было прекращено из-за Разногласий. JS v13? Как бы то ни было, теперь я вроде как заставил код работать. Спасибо за вашу помощь!

2. Может быть, потому, что я больше не использую v12 так IDK.

3. Кстати, я только что обновил его, если он работает, пожалуйста, отметьте его как ответ.