Estoy tratando de eliminar un comando Slash en un gremio específico, pero cuando uso el código de documentación me arroja este error:
DiscordAPIError[10063]: Unknown application command at SequentialHandler.runRequest (D:\Bots_Discord\robbie\bot\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.cjs:287:15) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async SequentialHandler.queueRequest (D:\Bots_Discord\robbie\bot\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.cjs:99:14) at async REST.request (D:\Bots_Discord\robbie\bot\node_modules\@discordjs\rest\dist\lib\REST.cjs:52:22) at async Object.run (D:\Bots_Discord\robbie\bot\slashCommands\showCommands.js:15:5) at async Object.run (D:\Bots_Discord\robbie\bot\events\interactionCreate\interactionHandler.js:56:7) { rawError: { message: 'Unknown application command', code: 10063 }, code: 10063, status: 404, method: 'DELETE', url: 'https://discord.com/api/v10/applications/998433286261067807/guilds/998574340419366952/commands/1009128621543264396', requestBody: { files: undefined, json: undefined } }
Uso la identificación de comando que está en el campo de integraciones de gremios https://i.stack.imgur.com/x8iSl.png
const { REST } = require('@discordjs/rest') const { Routes, SlashCommandBuilder } = require('discord.js') require('dotenv').config() const rest = new REST({ version: '10' }).setToken(process.env.SECRET_TOKEN); module.exports = { forEveryone: false, data: new SlashCommandBuilder() .setName('deletecommand') .setDescription('delete command'), async run(client, interaction) { await rest.delete(Routes.applicationGuildCommand(client.user.id, interaction.guild.id, '1009128621543264396')) .then(() => console.log('Successfully deleted guild command')) .catch(console.error) } }
Versión de nodo: v16.16.0 Versión de Discord.js: v14.2.0
Documentación de discordia: https://i.stack.imgur.com/jUgpg.png
Todavía no estoy seguro, pero parece que solo puedes eliminar los comandos de barra oblicua de los gremios en los que hayas registrado específicamente el comando ("comandos basados en gremios"). Si ha registrado el comando de barra diagonal globalmente, en todos los gremios, no puede eliminarlo de un solo gremio específico. La parte de la guía de la que incluiste una captura de pantalla tiene una sección justo debajo sobre cómo eliminar un comando global, aquí está el fragmento de código de esa guía :
// for guild-based commands rest.delete(Routes.applicationGuildCommand(clientId, guildId, 'commandId')) .then(() => console.log('Successfully deleted guild command')) .catch(console.error); // for global commands rest.delete(Routes.applicationCommand(clientId, 'commandId')) .then(() => console.log('Successfully deleted application command')) .catch(console.error);