Slash Commands

Discord.Short allows an easier method of creating slash commands!

When writing a slash command, its very similar to a normal command.

Lets start by creating a slash command, this is what one would normally look like:

new ds.Command({
    name: 'help',
    description: 'Need Help?', // required in a slash command
    slash: true, // making this command into a slash command
    guild: '839993561280938035', // optional
    async execute({arguments}) {
        // args
    }
});

where you see arguments, you can add any of these arguments:

  • interaction - the actual interaction coming from the command

  • channel - the channel the command was used in

  • guild - the server the command was used in

  • author - the user who used the command

  • args[] - the arguments after the command

  • send() - sending a message in the channel where the command was executed

so lets add a reply, ill be requiring MessageEmbed from discord.js

const { MessageEmbed } = Discord;

new ds.Command({
    name: 'help',
    description: 'Need Help?',
    setSlash: true,
    guild: '839993561280938035',
    async execute({send, author}) {
        send('Showing Help Embed:');
        send(new MessageEmbed({
            title: `Hi, ${author.username}`,
            description: 'This is an example bot for discord.short, an npm package\n> [[Package Link]](https://www.npmjs.com/package/discord.short)',
            footer: {
                text: 'Downloading Discord.Short will make it easier to make discord bots, like this one!'
            },
            color: 'BLUE'
        }));
    }
});

// you can't use MessageEmbeds in slash command replies

Overall, the file will look something like this:

example.js
const Discord = require('discord.short');
const ds = new Discord.Client('example');

const { MessageEmbed } = Discord;

ds.login({
  "botToken": "token",
  "mongo": {
    "username": "ephf",
    "password": "password",
    "cluster": "example.example"
    "database": "example"
  },
  "heroku": {
    "name": "example"
  }
});

new ds.Command({
    name: 'help',
    description: 'Need Help?',
    slash: true,
    guild: '839993561280938035',
    async execute({send, author}) {
        send('Showing Help Embed:');
        send(new MessageEmbed({
            title: `Hi, ${author.username}`,
            description: 'This is an example bot for discord.short, an npm package\n> [[Package Link]](https://www.npmjs.com/package/discord.short)',
            footer: {
                text: 'Downloading Discord.Short will make it easier to make discord bots, like this one!'
            },
            color: 'BLUE'
        }));
    }
});

again, we can run the bot using node

$ node example.js

now, you can see the command on the / list:

and when we run it, we get this:

Just like when you create normal commands, you can use arguments. But this is a bit different and required two more parameters:

new ds.Command({
    name: 'add1',
    description: 'Add 1 to any number!',
    slash: true,
    guild: '839993561280938035',
    arguments: [
        {
            name: 'number',
            description: 'the number you are adding 1 to',
            required: true,
            type: 'number'
        }
    ],
    async execute({send, args}) {
        send(`Answer: ${args[0] + 1}`);
    }
});

Then, when we run this in discord, we will get this:

You can set a command to a slash command and a normal command by changing the slash parameter to be "both"

new ds.Command({
    name: 'ping',
    description: 'ping pong',
    slash: "both",
    execute({send}){
        send('Pong!');
    }
});

Last updated