当不和谐成员加入时,向他们添加角色



当成员加入我的团队时,我遇到了给他们一个角色/级别的问题,我只有各种代码声明,到目前为止没有一个对我有帮助。我尝试过的一些代码来自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文档和谷歌中得到的。

我不知道问题是不是它读不到role.id,它必须是名称。问题是,ID是比role.name更好的解决方案,以防角色的名称应该更改,因为ID绑定到该角色,而不依赖于角色的名称。

我真的希望有人能帮我解决这个问题。

致以最诚挚的问候

虽然可以有相同的角色名称,但不能在多个公会中拥有相同的角色id

尝试使用ID意味着它被锁定为一个特定的ID。

假设ID属于你的公会,并且加入的成员不是加入你的服务器,而是其他人的,那么role将返回undefined,因为角色ID的角色不存在

如果您只将其用于服务器,那么这应该可以工作,只需确保检查成员是否已加入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,那么我建议你学习数据库是如何工作的,并尝试相应地处理它们。

尝试使用id:直接添加角色

client.on('GuildMemberAdd', member => {
console.log('User: ' + member.user.username + ' has joined the server!');
member.roles.add(ROLE_ID);
});

相关内容

最新更新