【问题标题】:Discord .js Purge Command v12(stable)Discord .js 清除命令 v12(稳定)
【发布时间】:2020-12-19 07:22:56
【问题描述】:

我对 discord.js 还很陌生,只是边走边学。我想创建一个 !purge 命令,它将删除聊天中指定数量的消息。我该怎么做呢?

非常感谢!

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    您可以使用message.channel.bulkDelete() 来执行此操作。假设您已经设置了 client.on("message"),以便您可以将命令与 args 分开,那么清除给定数量的消息的方法相当简单。

    这是一个示例,直接取自my own discord bot(因此经过彻底测试):

    //Mass-deletes messages
    function doPurge(message, args) {
        var purgeamnt = args[0];
        var purgelimit = Number(purgeamnt) + 1;
        message.channel.messages.fetch({ limit: purgelimit }).then(messages => {
            message.channel.bulkDelete(messages);
            message.reply("deleted " + messages.array().length + " messages, including deletion command.");
        }).catch(err => {
            message.channel.send("Failed to delete messages. This may be caused by attempting to delete messages that are over 2 weeks old.");
        });
    }
    

    再次,假设您创建了某种args 变量,它是您的命令的所有参数的数组。例如,如果您想清除 5 条消息,您可以使用 !purge 5。在这种情况下,"5" 应该是 args[0]。如果您以这种方式设置了 args 变量,则只需调用上述方法 (doPurge(message, args);) 即可清除消息。

    请注意两点:

    a) bulkDelete() 将只允许您删除超过两周的邮件。如果不删除频道中的所有消息,或者不牺牲速度和效率,就无法绕过这一点。

    b) 在允许用户使用此命令之前,您应该检查用户的权限。确保他们拥有MANAGE_MESSAGES 权限或ADMINISTRATOR 权限,使用if (message.member.hasPermission("MANAGE_MESSAGES")) doPurge(...) 之类的东西。

    相关资源:
    https://discord.js.org/#/docs/main/stable/class/TextChannel?scrollTo=bulkDelete

    【讨论】:

    • 谢谢!只是想知道,我可以使用您的解禁代码来获取用户 ID 吗?
    • 没问题!当然,您可以使用我的任何代码(包括获取用户 ID 的代码),只要您了解代码的工作原理,而不是直接复制粘贴!
    猜你喜欢
    • 2021-04-14
    • 2021-07-25
    • 2017-08-31
    • 2017-03-10
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2021-04-02
    相关资源
    最近更新 更多