generated at
SlashCommandBuilderを使ってスラッシュコマンドを登録する
@discordjs/builders にある SlashCommandBuilder REST APIを使ってスラッシュコマンドを登録する方法。

register.js
// コマンド設定部分 const { SlashCommandBuilder } = require('@discordjs/builders');//discord.jsがv14の場合はrequire("discord.js") const ping = new SlashCommandBuilder() .setName('ping') .setDescription('pong!') //@discordjs/buildersのバージョンが0.13.0未満の場合 const hello = new SlashCommandBuilder() .setName('hello') .setDescription('挨拶をします。') .addStringOption(option => option .setName('language') .setDescription('言語を指定します。') .setRequired(true) //trueで必須、falseで任意 .addChoice('Japanese', 'ja') .addChoice('English', 'en') ); //0.13.0以降 const hello = new SlashCommandBuilder() .setName('hello') .setDescription('挨拶をします。') .addStringOption(option => option .setName('language') .setDescription('言語を指定します。') .setRequired(true) //trueで必須、falseで任意 .addChoices( {name:'Japanese', value:'ja'}, {name:'English', value:'en'} ) ); const commands = [ping, hello] //登録用関数 const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v10'); //v14の場合は const { REST, Routes } = require("discord.js") const rest = new REST({ version: '10' }).setToken(process.env.token) async function main(){ await rest.put( Routes.applicationCommands("BOTのユーザーIDをコピーして貼り付ける"), { body: commands } ) } main().catch(err => console.log(err))

@discordjs/builders @discordjs/rest discord-api-types の3つが必要(discord.jsのバージョンがv14の場合は不要)。

SlashCommandBuilderにある主なメソッド
必須系
.setName(name:string)
スラッシュコマンドの名前( /test のtestの部分) をこれで指定する。
.setDescription(description:string)
スラッシュコマンドの説明部分を指定する。
オプション系
.addStringOption(function)
文字列を指定できるオプション
.addNumberOption(function)
数字を指定できるオプション
.addUserOption(function)
ユーザーメンションをさせるオプション
.addRoleOption(function)
ロールメンションをさせるオプション
.addChannelOption(function)
チャンネルメンションをさせるオプション
サブコマンド
.addSubCommand(SlashCommandSubcommandBuilder)
サブコマンドを追加するオプション。
SlashCommandSubcommandBuilder 内は上記のメソッドが使用可能。

オプションの function 内でのメソッド
.setName(name:string)
そのオプションの名前
.setDescription(description:string)
オプションの説明文
.setRequired(required:boolean)
true にすると必須のオプションになる。( false または指定なしだと任意のオプション)
.addChoice(name, value)
@discordjs/builders のバージョンが 0.13.0 以降の場合は使用できません
name にはオプションの選択肢の名前、 value は取得時に返される値となる。
.addChoices(choices:array)
@discordjs/builders のバージョンで引数が異なる。
~0.12.0 の場合
{name:"名前", value:"取得した時の値"} を配列で囲う。
0.13.0~ の場合
{name:"名前", value:"取得した時の値"} を配列で囲まずに引数でいれる。
(複数の選択肢を追加する場合は .addChoices({name:"名前A", value:"取得した時の値"}, {name:"名前B", value:"取得した時の値"}) のように、複数の引数になる。)