【发布时间】:2021-09-29 06:00:31
【问题描述】:
每当我给予或接受某人的角色时(或者如果像 hyperlabs 之类的东西赋予他们角色),我都会尝试更改我的数据库中的变量。它会注意到我何时给予或取消角色,但我似乎无法弄清楚如何正确措辞以找到角色 ID。
这是我目前正在使用的代码。
///Check for if a guild owner gained or lost the paid role
bot.on('guildMemberUpdate', async (oldMember, newMember) => {
let test1 = oldMember;
console.log(test1);
let test2 = newMember.roles.cache.some(r => r.name === `${[process.env.PAID_ROLE]}`);
console.log(test2);
if (test1 > test2 || test1 === null){
console.log('role change');
} else {
return;
}
});
当console.log(test1) 通过时,我会得到这个作为回报。 (x 是我取出 ids。我没有得到 x 回来。)
GuildMember {
guild: <ref *1> Guild {
members: GuildMemberManager {
cacheType: [class Collection extends Collection],
cache: [Collection [Map]],
guild: [Circular *1]
},
channels: GuildChannelManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {},
guild: [Circular *1]
},
roles: RoleManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {},
guild: [Circular *1]
},
presences: PresenceManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {}
},
voiceStates: VoiceStateManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {},
guild: [Circular *1]
},
deleted: false,
available: false,
id: 'xxxxxxxxxxxxxxxxx',
shardID: 0
},
joinedTimestamp: 1626625250120,
lastMessageID: null,
lastMessageChannelID: null,
premiumSinceTimestamp: 0,
deleted: false,
nickname: null,
_roles: [ '865042563555000350' ],
user: User {
id: 'xxxxxxxxxxxxxxxxxxx',
system: null,
locale: null,
flags: UserFlags { bitfield: 0 },
username: 'xxxxxxx',
bot: false,
discriminator: '9770',
avatar: '292a70982b25628322b90ffea55b0d57',
lastMessageID: null,
lastMessageChannelID: null
}
}
我还尝试了一种方法,将.roles.cache.size 的oldMember 和newMember 取为newMember 并写道:
如果旧成员的缓存大小大于或小于新成员,则检查角色并相应更新
但这给了我一个错误:
无法读取未定义的属性“id”。
有人说这不起作用的原因是角色部分不可读,我如何称呼它或类似的东西。我不记得他悲伤地说了什么。
编辑:Sourcebin 链接到整个 index.js,因为这可能是此代码块之外的问题。
【问题讨论】:
-
这能回答你的问题吗? Find out if someone has a role
-
是和不是。是的,因为您让我注意到 r.name 正在尝试查找角色的名称,而我正在为其提供角色 ID。感谢那。但也没有,因为您调用成员的方式与此功能略有不同。即 newMember 和 oldMember 部分
标签: javascript discord.js