【问题标题】:Collection#find: pass a function insteadCollection#find:改为传递函数
【发布时间】:2019-02-14 06:42:46
【问题描述】:

我是 node.js 的新手,我正在使用 discord.js 开发一个不和谐的机器人,我正在尝试使用命令来分配角色。当我执行代码并输入命令时,它可以成功运行,但在控制台中弹出“DeprecationWarning: Collection#find: pass a function instead”,我该如何摆脱这个?

https://i.imgur.com/agKFNsF.png

【问题讨论】:

标签: discord.js


【解决方案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'。这就像映射。 findmessage.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”时问题仍然存在,机器人给了我多个角色而不是删除其他角色。就像我写的删除角色代码不起作用,有什么想法吗?
    猜你喜欢
    • 2019-10-24
    • 2019-02-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多