首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不一致.js清除命令v12(稳定)

不一致.js清除命令v12(稳定)
EN

Stack Overflow用户
提问于 2020-12-19 07:03:45
回答 1查看 792关注 0票数 0

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

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-12-19 07:22:57

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

下面是一个直接取自my own discord bot的示例(因此经过了全面的测试):

代码语言:javascript
复制
//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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65365034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档