【发布时间】:2020-12-25 20:31:46
【问题描述】:
所以,我正在测试这个,当我使用这段代码时,它实际上并没有删除角色,这是一个错误吗?
关于代码:
client.on('message', async message => {
message.guild.roles.fetch()
.then(r => r.forEach(s =>
s.delete()
));
})
我也尝试了其他变体,例如:
client.on('message', async message => {
message.guild.roles.cache.forEach(r => r.delete());
});
client.on('message', async message => {
message.guild.roles.cache
.map(r => r.id)
.forEach(s =>
message.guild.roles.cache.find(l => l.id === s)
.delete()
);
});
client.on('message', async message => {
const roles = message.guild.roles.cache
.map(r => r.id);
for (m=0;m<roles.length;m++) {
message.guild.roles.cache.find(s => s.id === roles[m])
.delete();
}
});
我什至尝试不批量删除,只删除一个:
message.guild.roles.cache.find(s => s.id === 'ROLE_ID')
.delete();
似乎没有任何效果,它们都返回相同的错误:
TypeError: Cannot read property 'delete' of undefined
或
DiscordAPIError: Invalid Role
虽然我 100% 确定该角色确实存在并且有效。此错误仅在我尝试删除角色时发生。当我尝试使用
检查服务器中的角色时message.guild.roles.cache.map(r => r.id);
它有时会返回一个空白数组,尽管服务器中有are 角色。
【问题讨论】:
-
您使用的是哪个版本的 Discord.js?
-
discord.js^12.3.1是当前最新的。这也是我使用.cache的原因。等等……我不是在标题里写了这个吗……?我认为v12.1.x、v12.2.x和v12.3.x之间没有太大区别。
标签: javascript node.js discord discord.js