私は v12 を使用しており、これまでに試したことは次のとおりです。
client.on('guildMemberAdd', (guildMember) => {
guildMember.roles.add(
guildMember.guild.roles.find((r) => r.name === 'Newbie')
);
});
------------------------
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
1
ちょっとしたメモ。 GuildMemberRoleManager の add メソッドは、RoleResolvable をパラメーターとして受け取ります。これは Snowflake または Role のいずれかになります。つまり、.add(Role.id) は必ずしも必要ではありませんが、.add(Role) も同様に機能します。どちらの方法を使用しても、もう一方の方法に比べて利点があるかどうかはわかりませんが、オプションがあるのは良いことだと思います
– T.ダークス
2020 年 9 月 3 日 9:31