[英]How do i mention two roles in discord.js v13
const role = message.guild.roles.cache.find(role => role.name === ['Muted' || 'muted'])
上面的代码用于静音(和取消静音)命令。 通常服务器有M
大写或小写,这会影响编码中的角色。 使用上面的代码,它返回一个错误,说Unknown code
首先,让我们看看您的代码实际上在做什么。
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" || "otherString"
计算为"string"
。 请注意,此比较将始终失败,因为无法使用===
运算符比较不同的 arrays。
["muted"] === ["muted"] // this is false
如果您想对 arrays 进行检查,您需要自己实现一些迭代逻辑或使用有用的帮助程序之一,如Array#some
和Array#includes
。
进行不区分大小写比较的正确方法可能是
const role =
message.guild.roles.cache.find(role => role.name.toLowerCase() === "muted")
如果您真的只想支持 Mute 或muted
(例如,而不是Muted
),您的方法可以mUtEd
调整。
const role
= message.guild.roles.cache.find(role => ["muted","Muted"].includes(role.name))
// ^ anonymous array of acceptable values
将角色名称小写并将其与小写字符串进行比较
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.