Discord.js v12 角色查询

Posted

技术标签:

【中文标题】Discord.js v12 角色查询【英文标题】:Discord.js v12 role inquiry 【发布时间】:2021-08-28 22:15:31 【问题描述】:

我正在尝试开发一个不和谐的机器人,但我遇到了一些问题。

我的机器人的目的是当我服务器上的员工加入名为“XXXXXX”的语音频道时,向文本频道“YYYYYY”发送消息

我的代码块:


client.on('voiceStateUpdate', (oldMember, newMember) => 
    let newUserChannel = newMember.channelID;
    let oldUserChannel = oldMember.channelID;
    if(newUserChannel === "838819904798457928" && newMember.roles.cache.has === "839532611948511272")
     
        console.log(" example entered "+newUserChannel);
    
    else
        console.log("Left the channel");
    
);

我的错误代码:

if(newUserChannel === "838819904798457928" && newMember.roles.cache.has === "839532611948511272")
                                                                      ^

TypeError: Cannot read property 'cache' of undefined
Press any key to continue . . .

【问题讨论】:

.has() 是一种方法,而不是属性。您需要向其中传递一个值。例如newmember.roles.cache.has("839532611948511272") 【参考方案1】:

voiceStateUpdate 事件不返回 GuildMember,而是返回 VoiceState。

因此,为了获得成员角色,您必须首先从 VoiceState 中获得成员

client.on('voiceStateUpdate', (oldState, newState) => 
    console.log(newState.member.roles.cache);
);

【讨论】:

非常感谢。我解决了我的问题,现在它工作正常。我把工作代码块留在这里,以便我们想要做这种操作或有问题的朋友可以看看并使用它。 code client.on('voiceStateUpdate', (oldState, newState) => let newUserChannel = newState.channelID; if(newUserChannel === "838819904798457928" && newState.member.roles.cache.get('839532611948511272')) console.log("Rol Var"); );

以上是关于Discord.js v12 角色查询的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js v12 角色添加到提到的用户问题

如何从用户 discord.js v12 中删除所有角色?

discord.js V12中根据反应赋予角色时出错

如何检查用户是不是具有特定角色 discord.js v12? [复制]

无法读取未定义 discord.js v12 的属性“角色”

Discord.js V12 如何显示具有特定角色的所有成员?