const role = message.guild.roles.cache.find(role => role.name === ['Muted' || 'muted'])上面的代码是用于静音(和unmute)命令的。通常,服务器具有M大写或小,这会影响编码中的角色。对于上面的代码,它返回一个错误,名为Unknown code
发布于 2022-01-10 17:45:50
首先,让我们看看您的代码实际上在做什么。
const role = message.guild.roles.cache.find(role => role.name === ['Muted' || 'muted'])此代码等效于
const role = message.guild.roles.cache.find(role => role.name === ['Muted'])因为"string" || "otherString"的计算结果为"string"。注意,这种比较总是失败的,因为不能使用===操作符来比较不同的数组。
["muted"] === ["muted"] // this is false如果您想对数组进行检查,您需要自己实现一些迭代逻辑,或者使用像Array#some和Array#includes这样的有用的帮助工具。
进行个案比较的正确方法很可能是
const role =
message.guild.roles.cache.find(role => role.name.toLowerCase() === "muted")如果您真的只想支持Muted或muted (例如,不支持mUtEd ),那么您的方法可以使用一个小的调整。
const role
= message.guild.roles.cache.find(role => ["muted","Muted"].includes(role.name))
// ^ anonymous array of acceptable values 发布于 2022-01-10 17:45:47
小写角色名称,并将其与小写字符串进行比较。
const role = message.guild.roles.cache
.find(role => role.name.toLowerCase() == 'muted');如果您确实需要检查字符串数组中可能的角色名称,请使用Array#includes()
const role = message.guild.roles.cache
.find(role => ['foo', 'bar', 'baz'].includes(role.name));https://stackoverflow.com/questions/70656733
复制相似问题