--- title: Discord.js v14でコマンド登録 tags: - DiscordBot - Discord - Typescript - NodeJS image: /uploads/ publish: public --- # Dicord.jsを活用しよう かんたんなBotの作り方は色々乗ってますが、どんな機能をどういうふうに使えるのかをシンプルに一覧できたらいいなと思ったので備忘がてら書き残します。 この記事はdiscord.js 14 + typescriptの環境をターゲットにしています。 また、バージョンは、執筆時点で最新版の14.16.3をもとにしています。 ## Overview - 基本的な仕組み - メッセージと埋め込み - RESTクラスとpu - スラッシュコマンドの実装 - コンテクストメニューの実装 # 基本的な仕組み かつては、一般メッセージの文頭が特定のprefixならコマンドとみなすような原始的な実装がされていました。これは、全てのメッセージを読み取る必要があり、様々な問題がありました。 これがいつからかDiscordは、スラッシュコマンド等のボットに対するリクエスト方法を公式に用意して、そのリクエストをbotがハンドリングするような形になりました。 ## 例)コマンドの登録 ```ts import { REST, Routes, } from "discord.js" const rest = new REST({ version: "10" }).setToken(TOKEN); try { await rest.put(Routes.applicationCommands(CLIENT_ID), { body: [{ name: "ping", description: "Send Ping!", }] }); } catch (error) { console.error(error); } ``` TOKENとCLIENT_IDは与えてください。 これにより、ボットが導入されたサーバーで`/`を入力すると、補完のリストに登録されたものが見えます。 これらは、Botが起動していなくても利用できます。