#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)
также будет работать. Не знаю, есть ли преимущество в использовании любого метода по сравнению с другим, но, полагаю, приятно иметь варианты