繁体   English   中英

我如何在 discord.js v13 中提及两个角色

[英]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#someArray#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM