forked from discordjs/builders
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(SlashCommands): add slash command builders (#3)
Co-authored-by: Antonio Román <[email protected]> Co-authored-by: SpaceEEC <[email protected]>
- Loading branch information
1 parent
6ad24ec
commit 6aa3af0
Showing
22 changed files
with
9,463 additions
and
6,309 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/** @type {import('@babel/core').TransformOptions} */ | ||
module.exports = { | ||
parserOpts: { strictMode: true }, | ||
sourceMaps: 'inline', | ||
presets: [ | ||
[ | ||
'@babel/preset-env', | ||
{ | ||
targets: { node: 'current' }, | ||
modules: 'commonjs', | ||
}, | ||
], | ||
'@babel/preset-typescript', | ||
], | ||
plugins: ['babel-plugin-transform-typescript-metadata', ['@babel/plugin-proposal-decorators', { legacy: true }]], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
# Slash Command Builders | ||
|
||
## Ping command | ||
|
||
```ts | ||
import { SlashCommandBuilder } from '@discordjs/builders'; | ||
|
||
// Create a slash command builder | ||
const pingCommand = new SlashCommandBuilder().setName('ping').setDescription('Check if this interaction is responsive'); | ||
|
||
// Get the raw data that can be sent to Discord | ||
const rawData = pingCommand.toJSON(); | ||
``` | ||
|
||
## Arguments | ||
|
||
```ts | ||
import { SlashCommandBuilder } from '@discordjs/builders'; | ||
|
||
// Creates a boop command | ||
const boopCommand = new SlashCommandBuilder() | ||
.setName('boop') | ||
.setDescription('Boops the specified user, as many times as you want'); | ||
|
||
// Adds a user argument to the command | ||
boopCommand.addUserOption((option) => option.setName('user').setDescription('The user to boop').setRequired(true)); | ||
|
||
// Adds an integer option | ||
boopCommand.addIntegerOption((option) => | ||
option.setName('boop_amount').setDescription('How many times should the user be booped (defaults to 1)'), | ||
); | ||
|
||
// Supports choices too! | ||
boopCommand.addIntegerOption((option) => | ||
option | ||
.setName('boop_reminder') | ||
.setDescription('How often should we remind you to boop the user') | ||
.addChoice('Every day', 1) | ||
.addChoice('Weekly', 7) | ||
// Or, if you prefer adding more choices at once, you can use an array | ||
.addChoices([ | ||
['Every three months', 90], | ||
['Yearly', 365], | ||
]), | ||
); | ||
|
||
// Get the final raw data that can be sent to Discord | ||
const rawData = boopCommand.toJSON(); | ||
``` | ||
|
||
## Sub commands and sub command groups | ||
|
||
```ts | ||
import { SlashCommandBuilder } from '@discordjs/builders'; | ||
|
||
const pointsCommand = new SlashCommandBuilder().setName('points').setDescription('Lists or manages user points'); | ||
|
||
// Add a manage group | ||
pointsCommand.addSubCommandGroup((group) => | ||
group | ||
.setName('manage') | ||
.setDescription('Shows or manages points in the server') | ||
.addSubCommand((subCommand) => | ||
subCommand | ||
.setName('user_points') | ||
.setDescription("Alters a user's points") | ||
.addUserOption((option) => | ||
option.setName('user').setDescription('The user whose points to alter').setRequired(true), | ||
) | ||
.addStringOption((option) => | ||
option | ||
.setName('action') | ||
.setDescription('What action should be taken with the users points?') | ||
.addChoices([ | ||
['Add points', 'add'], | ||
['Remove points', 'remove'], | ||
['Reset points', 'reset'], | ||
]) | ||
.setRequired(true), | ||
) | ||
.addIntegerOption((option) => option.setName('points').setDescription('Points to add or remove')), | ||
), | ||
); | ||
|
||
// Add an information group | ||
pointsCommand.addSubCommandGroup((group) => | ||
group | ||
.setName('info') | ||
.setDescription('Shows information about points in the guild') | ||
.addSubCommand((subCommand) => | ||
subCommand.setName('total').setDescription('Tells you the total amount of points given in the guild'), | ||
) | ||
.addSubCommand((subCommand) => | ||
subCommand | ||
.setName('user') | ||
.setDescription("Lists a user's points") | ||
.addUserOption((option) => | ||
option.setName('user').setDescription('The user whose points to list').setRequired(true), | ||
), | ||
), | ||
); | ||
|
||
// Get the final raw data that can be sent to Discord | ||
const rawData = pointsCommand.toJSON(); | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.