SlashCommandBuilderを使ってスラッシュコマンドを登録する
@discordjs/buildersにある SlashCommandBuilder と REST APIを使ってスラッシュコマンドを登録する方法。 code: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 { 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:"取得した時の値"})のように、複数の引数になる。)