当他们加入我的纷争时,给成员一个角色/等级是我的问题,我只有各种各样的代码声明,到目前为止,它们都没有帮助我。我尝试过的一些代码来自Stackoverflow。
我最后的尝试是这样:
client.on('GuildMemberAdd', member => {
console.log('User: ' + member.user.username + ' has joined the server!');
var role = member.guild.roles.cache.find(role => role.id === "<My role ID>");
member.roles.add(role);
});
这是我从discord.js文档和Google那里得到的,当我四处寻找解决问题的方法时。
我不知道问题是否在于它无法读取role.id
,而必须是名称。
问题在于,与role.name
相比,ID是一个更好的解决方案,以防万一角色上的名称应更改,因为ID绑定到了该角色而不依赖于角色的名称。>
我确实希望有人可以帮助我解决这个问题。
最好的问候
答案 0 :(得分:0)
尝试使用ID直接添加角色:
client.on('GuildMemberAdd', member => {
console.log('User: ' + member.user.username + ' has joined the server!');
member.roles.add(ROLE_ID);
});
答案 1 :(得分:0)
尽管您可以具有相同的角色名称,但您在多个行会中不能具有相同的角色ID。
尝试使用ID意味着它已锁定到一个特定的ID。
说,该ID属于您的行会,并且加入的成员没有加入您的服务器,但是其他人的加入,则role
将返回undefined,因为该角色ID的角色不存在。 br />
如果仅将其用于服务器,则此方法应该起作用,只需确保检查成员是否已加入your
服务器。因此,除了您的服务器外,它将使用名称代替
client.on('GuildMemberAdd', member => {
if (member.guild.id === "<My guild ID>") {
// <My guild ID> represents an ID of a guild that has a role with the ID <My role ID>
console.log('User: ' + member.user.username + ' has joined the server!');
var role = member.guild.roles.cache.find(role => role.id === "<My role ID>");
member.roles.add(role);
} else {
console.log('User: ' + member.user.username + ' has joined ' + member.guild.name + ' server!');
var role = member.guild.roles.cache.find(role => role.name === "<Whatever>");
member.roles.add(role);
}
});
如果您希望他们能够为每个行会保存不同的ID,那么我建议您学习数据库的工作方式并尝试相应地对其进行工作。