我正在尝试通过不和谐的vc游戏“ Among Us”,并为每个人提供“游戏中”角色。目前,我的代码是:
bot.on('message', message => {
//let role = member.guild.roles.cache.find(role => role.name === "In-Game");
let role = message.guild.roles.cache.find(role => role.name == "In-Game");
let channels = message.guild.channels.cache.filter(c => c.parentID === '759363400253308948' && c.type === 'voice');
if (message.content.startsWith('.rank')) {
for (const [channelID, channel] of channels) {
for (const [memberID, member] of channel.members) {
member.roles.add(role);
}
}
}
})
我没有收到错误,但也没有得到任何结果?为什么会这样?
答案 0 :(得分:1)
我认为问题是您的channel变量为空,因此当您尝试在其上循环并对该通道中的成员进行循环时,什么也没有发生。
我认为这样做的原因是您的arrow函数,该函数过滤子级确定为某个父级的通道,但不返回任何内容。 channel.parentID
返回一个数字,但是您正在使用===
将其与一个数字字符串进行比较,该检查将检查值AND类型。更改为==
(即使类型不同,也将检查值是否相等)或删除引号。
bot.on('message', message => {
//let role = member.guild.roles.cache.find(role => role.name === "In-Game");
let role = message.guild.roles.cache.find(role => role.name == "In-Game");
let channels = message.guild.channels.cache.filter(c => c.parentID == '759363400253308948' && c.type === 'voice');
if (message.content.startsWith('.rank')) {
for (const [channelID, channel] of channels) {
for (const [memberID, member] of channel.members) {
member.roles.add(role);
//if you want to do anything after the roles have been added, you need to await the above line
//and make the event function async.
}
}
}
})
注意:您的漫游器需要相关权限。我相信必要的一个:
阅读文本频道/查看语音频道:查看用户所在的频道
管理角色:可让您为用户分配角色。