【问题标题】:Discord.js V13 array is not functionDiscord.js V13 数组不起作用
【发布时间】:2021-10-13 03:09:38
【问题描述】:

在 discord.js 的第 12 版中,我创建了一个名为 clear 的命令,如果指定了用户,该命令会应用过滤器。

我将代码更新到 v13,一切正常,但我的 clear 命令有问题。

我查看了他们的文档,据我所知,他们刚刚删除了 array 方法,但我找不到替换它的内容。

我的目标是,我想获取指定用户的消息。例如,如果数量是 20,我想获取用户的 20 条消息,然后删除这些消息。

我的代码:

message.channel.messages.fetch().then((msgs) => {
    const UserMessages = msgs
        .filter((m) => m.author.id === member.id)
        .array()
        .slice(0, messages); // this line throws error: array is not function.

    message.channel.bulkDelete(UserMessages, true).then((data) => {
        // rest of my code
    });
});

【问题讨论】:

  • msgs.filter 返回什么?如果 msgs 是一个数组,那么过滤的结果也是,并且数组没有数组方法。
  • 在版本 12 中,它正在返回用户的消息。我现在在他们的收藏列表中找不到 array() 。他们删除了它。

标签: javascript node.js discord discord.js


【解决方案1】:

正如 @jonrsharpe 在他们的评论中链接的那样,v13 将 .array() 函数更改为使用带有扩展语法的 .values()

//instead of
msgs.filter((m) => m.author.id === member.id).array()
//use
[...msgs.filter((m) => m.author.id === member.id).values()]

如果您想重新添加功能,请使用:

const Discord = require('discord.js');
const { Collection } = Discord;
Collection.prototype.array = function() {
return [...this.values()]
}
//msgs.filter(...).array() should now work

【讨论】:

    【解决方案2】:

    尝试使用 id。

    client.on("message", (message) => {
    
    let mention = message.mentions.users.first();
    
        if(message.author.id == ${mention.id}){
            message.delete()
        }
    });
    

    【讨论】:

    • 我只想获取他们给定数量的消息。例如,如果数量是 20,我想获取指定用户的 20 条消息。
    • 尝试使用 args const args = message.content.slice(prefix.length).trim().split(/\s+/g);
    猜你喜欢
    • 2022-01-02
    • 2021-11-09
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多