收到 Discord 静音命令 TypeError: fn is not a function

时间:2021-02-11 23:43:32

标签: javascript node.js discord.js

我收到以下错误:

C:\Users\(private)\discord\bots\(private)\node_modules\@discordjs\collection\dist\index.js:161
            if (fn(val, key, this))
                ^

TypeError: fn is not a function

与错误相关的代码:

// This is in the discord.js module
 find(fn, thisArg) {
        if (typeof thisArg !== 'undefined')
            fn = fn.bind(thisArg);
        for (const [key, val] of this) {
            if (fn(val, key, this))
                return val;
        }
        return undefined;
    }

还有我的代码,如果有帮助的话。出于测试目的,我已将其简化为一个简单的 console.log:

\\ not everything is here, just the important stuff.
const target = message.guild.members.cache.find(args[0])
console.log(target.roles.forEach(role => console.log(role.id))) 

1 个答案:

答案 0 :(得分:1)

这是因为 .find() 接受一个函数作为参数,但您提供了一个字符串。它返回给定函数返回真值的第一项。您可以通过检查成员的 homepage() 属性是否与 id 相同来查找成员:

args[0]

但您可能应该使用速度更快的 .get() 方法通过成员 ID 获取成员:

message.guild.members.cache.find((member) => member.id == args[0])