Discord Bot Portal JP
手順 読了目安 約10分 更新 2026.07.03

discord.js による Discord Bot 開発

discord.js v14 系で Discord Bot を作る前に、Node.js 環境、Developer Portal、Token 管理、GatewayIntentBits、スラッシュコマンド、運用前チェックの流れを整理します。

この記事で分かること

  • Node.js と npm の準備
  • Developer Portal と Token の扱い
  • Client、Events、GatewayIntentBits の基本
  • スラッシュコマンド登録と Interaction 処理
  • TypeScript 化と運用前チェック

discord.js は、Node.js で Discord Bot を作るための代表的なライブラリです。イベント、スラッシュコマンド、ボタン、Embed などを JavaScript または TypeScript で扱えます。

discord.js は版による書き方の差が大きいため、古い記事のコードをそのまま利用すると動かないことがあります。この記事では v14 系の考え方で、環境準備から運用前チェックまでを整理します。

開発環境を用意する

Node.js と package.json

まず Node.js のバージョンと package manager を決めます。discord.js の公式ガイドは、環境準備、アプリケーション設定、Bot の追加、コマンド作成へ段階的に進む構成です。

プロジェクトでは package.json を作り、依存関係と起動コマンドを管理します。npm run start で何が起動するのか、開発用と本番用のスクリプトをどう分けるのかも決めておきます。

確認ポイント

  • node --version で実行環境を把握した
  • package.json と lockfile をリポジトリで管理している
  • CommonJS と ESM のどちらで書くかを決めた
  • 起動コマンドを scripts にまとめた

Developer Portal と Token

Bot を動かすには、Developer Portal で Application と Bot を用意し、導入URLや権限、Intent を整えます。Portal 側の見方はDiscord Developer Portal 解説で詳しく扱っています。

Token は、環境変数やホスティングサービスのシークレット機能で渡します。学習用の config.json を公開リポジトリへ含めると Token 漏えいにつながるため、.gitignore とデプロイ先の変数設定を早めに整えます。

⚠️ Bot Token、client secret、Webhook URL は公開しません。漏えいした可能性がある場合は、値を伏せるだけでなく再生成して古い値を無効にします。

小さく起動する

Client と GatewayIntentBits

最初の目標は、Client を作成し、必要最小限の Intent を指定してログインし、ready イベントで起動を確認するところです。discord.js v14 では、公式ガイドの Creating the main file で ClientEventsGatewayIntentBits を使う最小構成が紹介されています。

Intent は、Bot が受け取るイベントの範囲を決めます。必要なイベントだけを指定し、動かないときはライブラリ別トラブルシューティングで版、Intent、partials、登録処理を切り分けます。

イベント処理

discord.js では、ready、interactionCreate、messageCreate などのイベントを処理します。最初からすべてを扱わず、目的の機能に必要なイベントだけを追加します。

イベントファイルを分ける場合は、読み込み処理、エラー時のログ、非同期処理の扱いを決めておきます。イベントが届かないときは、コードの関数名だけでなく、Intent、Bot の権限、導入先サーバー、起動ログを合わせて見ます。

コマンドと Interaction

スラッシュコマンド登録

スラッシュコマンドは、登録する処理と、実行された Interaction に応答する処理を分けて考えます。コマンド定義を作るだけでは利用者に表示されず、登録先と反映範囲も関わります。

開発中はテスト用サーバーで挙動を見ながら進めると、反映待ちや権限の切り分けがしやすくなります。公開範囲、管理者専用コマンド、引数の型、失敗時の返信を先に決めておくと、後からコマンドが増えても整理しやすくなります。

reply、defer、表示範囲

Interaction は、利用者の操作に対して Bot が応答する仕組みです。処理に時間がかかる場合、先に応答を保留し、あとから結果を返す設計が必要になることがあります。公開返信にするか、操作した本人だけに見せるかも機能ごとに判断します。

ボタン、セレクトメニュー、モーダルを扱う場合は、custom id、操作できるユーザー、期限切れ後の扱いを決めます。Interaction 周りで詰まったらコマンド・Interaction の逆引きを参照します。

保守しやすくする

TypeScript と分割

discord.js は JavaScript でも利用できますが、機能が増えるほど TypeScript の型が役立つ場面があります。コマンド、イベント、設定を分けると、変更箇所が追いやすくなります。

ただし、最初から複雑なフレームワーク構成にする必要はありません。まず1つのコマンドを安全に動かし、次にイベント分割、コマンド分割、設定管理、テストの順に広げます。

運用前チェック

ローカルで動いた Bot でも、ホスティング先では環境変数、起動コマンド、Node.js のバージョン、ログの見え方が変わります。デプロイ前に、起動方法と復旧手順を運用メモに残します。

公開サーバーへ導入する前に、テストサーバーで権限、Intent、コマンド登録、エラー時の応答を見ます。運用に入る場合は、Bot 運用前チェックホスティングのトラブルシューティングも参考にしてください。

確認ポイント

  • Token を環境変数やシークレットで渡している
  • 起動コマンドと Node.js のバージョンを固定した
  • guild/global の登録範囲を目的に合わせて選んだ
  • エラー時に利用者向け返信と管理者向けログを分けた

一次情報(公式ドキュメント)