当我输入斜杠时,我的取消禁止和禁止命令没有显示

问题描述 投票:0回答:1

我尝试使用 Discord.JS V14 编写机器人,因为我总是使用 v12 进行编码,并且我观看了文档和一些教程,并且观看了两个。一个用于清除命令,另一个用于禁止和取消禁止命令,当我输入“/”并清除时,清除命令显示并且完全起作用,但当我想输入 /ban 或 /unban 时,它不显示任何内容,我的控制台不显示任何内容显示任何错误

这是我的代码,有些东西是西班牙语的,因为我是西班牙语,但如果有人需要,我可以翻译它们。

索引:

const Discord = require('discord.js');
const configuracion = require('./config.json')
const cliente = new Discord.Client({
    intents: [
Discord.GatewayIntentBits.Guilds
    ]
});


module.exports = cliente

cliente.on('interactionCreate', (interaction) => {
    if(interaction.type === Discord.InteractionType.ApplicationCommand){
        
        const cmd = cliente.slashCommands.get(interaction.commandName);
        if(!cmd) return interaction.reply(`Error`);
        interaction["member"] = interaction.guild.members.cache.get(interaction.user.id);
        cmd.run(cliente, interaction)

    }
})

cliente.on('ready', () => {
    console.log(`🔑 Sesión iniciada como ${cliente.user.username}`)
})

cliente.slashCommands = new Discord.Collection()

require('./handler')(cliente)

cliente.login(configuracion.token)

索引/处理程序

const fs = require('fs');
const Discord = require('discord.js');

module.exports = async (client) => {
    const SlashArray = [];

    fs.readdir('./Comandos', (error, folder) => {
        if (error) {
            console.error('Error al leer el directorio:', error);
            return;
        }

        if (!folder || folder.length === 0) {
            console.error('No se encontraron carpetas en el directorio.');
            return;
        }

        folder.forEach(subfolder => {
            fs.readdir(`./Comandos/${subfolder}/`, (error, files) => {
                if (error) {
                    console.error('Error al leer archivos en la carpeta:', error);
                    return;
                }

                files.forEach(file => {
                    if (!file.endsWith('.js')) return;

                    const filePath = `../Comandos/${subfolder}/${file}`;
                    const command = require(filePath);

                    if (!command.name) return;

                    client.slashCommands.set(command.name, command);
                    SlashArray.push(command);
                });
            });
        });
    });

    client.on('ready', async () => {
        client.guilds.cache.forEach(guild => guild.commands.set(SlashArray));
    });
};

清除cmd

const fs = require('fs');
const Discord = require('discord.js');

module.exports = async (client) => {
    const SlashArray = [];

    fs.readdir('./Comandos', (error, folder) => {
        if (error) {
            console.error('Error al leer el directorio:', error);
            return;
        }

        if (!folder || folder.length === 0) {
            console.error('No se encontraron carpetas en el directorio.');
            return;
        }

        folder.forEach(subfolder => {
            fs.readdir(`./Comandos/${subfolder}/`, (error, files) => {
                if (error) {
                    console.error('Error al leer archivos en la carpeta:', error);
                    return;
                }

                files.forEach(file => {
                    if (!file.endsWith('.js')) return;

                    const filePath = `../Comandos/${subfolder}/${file}`;
                    const command = require(filePath);

                    if (!command.name) return;

                    client.slashCommands.set(command.name, command);
                    SlashArray.push(command);
                });
            });
        });
    });

    client.on('ready', async () => {
        client.guilds.cache.forEach(guild => guild.commands.set(SlashArray));
    });
};

禁止cmd

const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits} = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName("ban")
        .setDescription("⛔ → Banea a un usuario determinado del servidor.")
        .setDefaultMemberPermissions(PermissionFlagsBits.BanMembers)
        .addUserOption(option =>
            option.setName("usuario")
                .setDescription("Usuario que será baneado.")
                .setRequired(true)
        )
        .addStringOption(option =>
            option.setName("motivo")
                .setDescription("Un motivo para el baneo")
        ),

    async execute(interaction) {
        const usuario = interaction.options.getUser("usuario");
        const motivo = interaction.options.getString("motivo") || "No se proporcionó una razón.";

        const miembro = await interaction.guild.members.fetch(usuario.id);

        const errEmbed = new EmbedBuilder()
            .setTitle("🛡️ Error 702")
            .setDescription(`No puedes tomar acciones sobre ${usuario.username} ya que tiene un rol superior al tuyo.`)
            .setColor("RED")
            .setTimestamp()
            .setFooter({ text: `👀 Comando enviado por ${interaction.user.tag} con id ${interaction.user.id}`, iconURL: interaction.user.displayAvatarURL() });

        if (miembro.roles.highest.position >= interaction.member.roles.highest.position)
            return interaction.reply({ embeds: [errEmbed] })

        await miembro.ban({ reason: motivo });

        const embedban = new EmbedBuilder()
            .setTitle("🛡️ Acciones de baneo tomadas.")
            .setDescription(`ℹ️ El usuario ${usuario.tag} ha sido baneado\n **Motivo:** \`${motivo}\``)
            .setColor("GREEN")
            .setTimestamp()
            .setFooter({ text: `👀 Comando enviado por ${interaction.user.tag} con id ${interaction.user.id}`, iconURL: interaction.user.displayAvatarURL() });

        await interaction.reply({
            embeds: [embedban]
        });
    }
}

如图所示,它不显示任何禁止/取消禁止命令,仅显示 ping 命令和清除/清除

我尝试了 2 种不同的斜杠命令方式,认为它会起作用,但它不起作用,我不知道是什么,我已经挣扎了大约 1 天,有什么建议吗?

node.js discord discord.js command
1个回答
0
投票

请参阅本指南

您需要首先通过向不和谐 API 发出 REST 请求来注册您的命令。

© www.soinside.com 2019 - 2024. All rights reserved.