【问题标题】:discord.js TypeError: fn is not a functiondiscord.js 类型错误:fn 不是函数
【发布时间】:2021-01-26 07:50:38
【问题描述】:

我正在尝试使用从另一个数组中找到的通道名称创建一个数组,但它返回错误“TypeError:fn 不是函数”。这是相关代码。

    var filtered_channel_ids = [];
    filtered_channel_names.forEach(element => filtered_channel_ids.push(client.channels.cache.find(element).id))
    console.log(filtered_channel_ids);

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    Collection.prototype.find() 需要一个函数。例如:

    collection.find((element) => element.name === 'Hello World')
    

    但是,element 是一个字符串(或者我假设您没有显示 filtered_channel_names 数组)。看起来你想通过它的名字找到一个频道,你可以使用类似于上面的函数的东西。

    client.channels.cache.find((c) => c.name === element).id
    

    此外,您还可以对代码进行多项优化。首先,你可以用Array.prototype.reduce()代替forEach()。

    另外,由于频道是通过 ID 映射的,因此您可以使用 findKey() 而不是 find() 来自动返回频道 ID。

    // original
    var filtered_channel_ids = [];
    filtered_channel_names.forEach(element => filtered_channel_ids.push(client.channels.cache.find(element).id))
    console.log(filtered_channel_ids);
    
    // new and improved
    var filtered_channel_ids = filtered_channel_ids.reduce((acc, name) => 
      acc.push(client.channels.cache.findKey((c) => c.name === name), [])
    console.log(filtered_channels_ids)
    

    【讨论】:

    • 大声笑我不小心把它标记为社区维基。我的错。
    猜你喜欢
    • 2020-11-04
    • 2020-08-23
    • 2020-09-23
    • 1970-01-01
    • 2021-04-26
    • 2021-12-24
    • 2021-05-31
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多