首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在discord.js v13中提到两个角色

如何在discord.js v13中提到两个角色
EN

Stack Overflow用户
提问于 2022-01-10 17:43:10
回答 2查看 174关注 0票数 0
代码语言:javascript
复制
const role = message.guild.roles.cache.find(role => role.name === ['Muted' || 'muted'])

上面的代码是用于静音(和unmute)命令的。通常,服务器具有M大写或小,这会影响编码中的角色。对于上面的代码,它返回一个错误,名为Unknown code

EN

回答 2

Stack Overflow用户

发布于 2022-01-10 17:45:50

首先,让我们看看您的代码实际上在做什么。

代码语言:javascript
复制
const role = message.guild.roles.cache.find(role => role.name === ['Muted' || 'muted'])

此代码等效于

代码语言:javascript
复制
const role = message.guild.roles.cache.find(role => role.name === ['Muted'])

因为"string" || "otherString"的计算结果为"string"。注意,这种比较总是失败的,因为不能使用===操作符来比较不同的数组。

代码语言:javascript
复制
["muted"] === ["muted"] // this is false

如果您想对数组进行检查,您需要自己实现一些迭代逻辑,或者使用像Array#someArray#includes这样的有用的帮助工具。

进行个案比较的正确方法很可能是

代码语言:javascript
复制
const role = 
  message.guild.roles.cache.find(role => role.name.toLowerCase() === "muted")

如果您真的只想支持Mutedmuted (例如,不支持mUtEd ),那么您的方法可以使用一个小的调整。

代码语言:javascript
复制
const role 
  = message.guild.roles.cache.find(role => ["muted","Muted"].includes(role.name))
//                                         ^ anonymous array of acceptable values 
票数 3
EN

Stack Overflow用户

发布于 2022-01-10 17:45:47

小写角色名称,并将其与小写字符串进行比较。

代码语言:javascript
复制
const role = message.guild.roles.cache
   .find(role => role.name.toLowerCase() == 'muted');

如果您确实需要检查字符串数组中可能的角色名称,请使用Array#includes()

代码语言:javascript
复制
const role = message.guild.roles.cache
   .find(role => ['foo', 'bar', 'baz'].includes(role.name));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70656733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档