Автоматическая роль Discord при присоединении к серверу

#discord.js

#discord.js

Вопрос:

Я использую версию 12, и это то, что я пробовал до сих пор:

 client.on('guildMemberAdd', (guildMember) => {
 guildMember.roles.add(
  guildMember.guild.roles.find((r) => r.name === 'Newbie')
 );
});
  

Ответ №1:

Discord JS v12 вводит концепцию менеджеров, вы больше не сможете напрямую использовать методы сбора данных, такие как GuildMember.roles.find . Теперь вам придется напрямую запрашивать кэш у менеджера, прежде чем пытаться использовать методы сбора данных. ( GuildMember.roles.cache.find );


 client.on("guildMemberAdd", guildMember => { // Detecting when a GuildMember joins the guild.
    const Role = guildMember.guild.roles.cache.find(role => role.name == "Newbie"); // Getting the Role by name.
    if (!Role) return console.log("Invalid Role"); // Checking if the Role exists.

    guildMember.roles.add(Role.id).catch(error => console.log(error)); // Adding the Role to the GuildMember.
});
  

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

1. Небольшое примечание; add метод в GuildMemberRoleManager принимает RoleResolvable в качестве параметра, который может быть либо Снежинкой, либо Ролью. Это означает, что вам не обязательно, .add(Role.id) но .add(Role) также будет работать. Не знаю, есть ли преимущество в использовании любого метода по сравнению с другим, но, полагаю, приятно иметь варианты