📜  如何制作清除命令 discord.js - Javascript (1)

📅  最后修改于: 2023-12-03 15:08:31.100000             🧑  作者: Mango

如何制作清除命令 discord.js - Javascript

在编写基于discord.js的Discord机器人时,清除命令是一个很常用的功能。这个命令可以用来清除频道中的消息。

本文将会介绍如何制作清除命令的代码片段,并给出相应的解释。

代码片段
const Discord = require('discord.js');

module.exports = {
    name: 'clear',
    description: 'Clears messages from the channel.',
    async execute(message, args) {
        if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('You do not have permission to use this command.');
        if (!args[0]) return message.channel.send('Please specify the number of messages to clear.');
        const amount = parseInt(args[0]) + 1;

        if (isNaN(amount)) return message.channel.send('The specified amount is not a number.');
        if (amount <= 1 || amount > 100) return message.channel.send('The specified amount must be between 1 and 99.');

        await message.channel.bulkDelete(amount, true).catch(err => {
            console.error(err);
            message.channel.send('An error occurred while trying to clear messages.');
        });
    },
};
代码解释
name 和 description
name: 'clear',
description: 'Clears messages from the channel.',

name是将要使用的命令的名字。在本例中,命令的名字是clear

description是将要使用的命令的描述。

execute 函数
async execute(message, args)

execute函数是命令请求时执行的函数。在命令被调用时,该函数被调用。

检查权限
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('You do not have permission to use this command.');

这个的作用是检查是否有权限执行该命令。这里使用的是hasPermission函数,并用message.member访问了GuildMember对象。如果用户没有权限,则bot会发送一条消息:"You do not have permission to use this command."。

检查参数
if (!args[0]) return message.channel.send('Please specify the number of messages to clear.');
const amount = parseInt(args[0]) + 1;

if (isNaN(amount)) return message.channel.send('The specified amount is not a number.');
if (amount <= 1 || amount > 100) return message.channel.send('The specified amount must be between 1 and 99.');

这个的作用是检查命令是否有合适的参数。如果没有参数,则bot发送一条消息:"Please specify the number of messages to clear."。

如果有参数,我们要将其转换成数字形式。我们用parseInt函数和+1来实现这个目的。如果无法解析参数,则bot会发送一条消息:"The specified amount is not a number."。

最后,我们检查参数是否在1到99之间。这是为了避免从频道中删除太多的消息。

删除消息
await message.channel.bulkDelete(amount, true).catch(err => {
    console.error(err);
    message.channel.send('An error occurred while trying to clear messages.');
});

代码片段的主要部分是这个函数调用。bulkDelete函数用于从频道中删除指定数量的消息。我们使用上面的代码检查了参数,现在只需要将其传递给bulkDelete函数即可。

第二个参数为true,表示将同时删除不是bot消息的消息。如果不想删除这些消息,请将其设置为“false”。

返回

这个代码片段应该被导出,并且可以在其他JS文件中被引用并使用。

结论

制作清除命令有很多方法。在这个示例中,我们使用的是bulkDelete函数。通过这个代码片段,我们可以清除指定数量的消息。