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