Collection#find:改为传递函数
Posted
技术标签:
【中文标题】Collection#find:改为传递函数【英文标题】:Collection#find: pass a function instead 【发布时间】:2019-02-14 06:42:46 【问题描述】:我是 node.js 的新手,我正在使用 discord.js 开发一个不和谐的机器人,我正在尝试使用命令来分配角色。当我执行代码并输入命令时,它可以成功运行,但在控制台中弹出“DeprecationWarning: Collection#find: pass a function instead”,我该如何摆脱这个?
https://i.imgur.com/agKFNsF.png
【问题讨论】:
欢迎来到 Stack Overflow!请带上tour,四处看看,通读help center,特别是How do I ask a good question? 邮政编码、标记、错误消息等作为文本,而不是作为图片的文字。原因:meta.***.com/q/285551/157247 请具体说明您遇到的问题(错误消息似乎很清楚)。 【参考方案1】:此警告是由以下行引起的:
var role = message.guild.roles.find('name', 'Epic Gamer');
在早期版本的 Discord.js 上,这将是有效的,但他们现在重做了 find
函数。您无需传入属性和值,而是传入过滤函数。这应该有效:
var role = message.guild.roles.find(role => role.name === "Epic Gamer")
我们没有传入'name'
(属性)和'Epic Gamer'
(我们要搜索/过滤掉的值),而是传入箭头函数role => role.name === 'Epic Gamer'
。这就像映射。 find
将message.guild.roles
中的每个角色作为role
传递给函数,然后检查我们想要的属性是否等于我们想要的值。
如果您想详细了解find
功能,请查看the official documentation.
【讨论】:
【参考方案2】:在find
方法中传递一个谓词函数,看看find
函数上的discord.js文档。
将find
语句更改为
var role = message.guild.roles.find(role => role.name === 'Epic Gamer');
希望这会有所帮助!
【讨论】:
谢谢你我现在已经这样做了,错误消失了,但是当我输入“角色 1”和“角色 2”时问题仍然存在,机器人给了我多个角色而不是删除其他角色。就像我写的删除角色代码不起作用,有什么想法吗?以上是关于Collection#find:改为传递函数的主要内容,如果未能解决你的问题,请参考以下文章