So I’m using discord.js version 12.5.3 to rebuild a music bot I did a while back. I’m trying to use slash commands but when I use guild.commands.set([commands]) it says that guild.commands is undefined. Here’s that part of my code.
async function loadCommands(guild) { try { const commands = Array.from(client.commands).map(([name, command]) => { let optionsArr = command?.usage ?.replaceAll(/[>|]]/g, " ") .split(/ +/g) .filter((option) => option !== "") || []; return { name, description: command.description, options: optionsArr.map((option) => { let required = option.substring(1, option.length) === "<"; return { name: option.substring(1, option.length), type: "STRING", description: option.substring(1, option.length), required, }; }), }; }); await guild.commands.set(commands); } catch (e) { return e; } } client.on("ready", () => { console.log(`Logged in as ${client.user.tag}`); client.guilds.cache.forEach(async (guild) => { await loadCommands(guild); }); });
Advertisement
Answer
Guild.commands
was only introduced in v13. In v12, the way to create slash commands is using commands.post()
.
This answer may clarify a little
client.api.applications(client.user.id).guilds("GUILD ID HERE").commands.post({/*slash cmd data*/})
The above is to post a guild command (limited to 1 guild)
client.api.applications(client.user.id).commands.post({*/slash cmd data*/})
The above is to post a global command (can be used in every guild)