discord.js 機能別逆引きガイド
discord.js v14 系で実装したいことから、使うクラスや考え方、公式ガイド、本サイトのトラブルシューティング記事を探せるように整理します。
この記事で分かること
- やりたいことから discord.js の機能を探す方法
- Interaction、メッセージ、サーバー操作の分け方
- GatewayIntentBits、partials、権限で詰まりやすい箇所
- 公式ガイドと本サイト記事の参照先
このページは、discord.js で「何を作りたいか」から参照先を探す逆引きです。使う機能と詰まりやすい点を整理します。
discord.js は、版によって import 名やクラス名、Intent 指定が変わります。古い記事の前に、利用中の版と公式ガイドを照らし合わせます。
Interaction と操作UI
スラッシュコマンド、ボタン、セレクトメニュー、モーダルは Interaction として扱います。登録処理、interactionCreate、応答方法、custom id を分けます。
| やりたいこと | 使う機能・考え方 | 参照先 |
|---|---|---|
| スラッシュコマンドを作りたい | SlashCommandBuilder、REST登録、guild/global の登録範囲 | discord.js guide: Slash Commands、Discord Application Commands、Interaction 逆引き |
| ボタンを押したら処理したい | ButtonBuilder、Action Row、custom id、interactionCreate | discord.js guide: Buttons、Discord Components、Interaction 逆引き |
| 選択・入力を受けたい | Select menu、ModalBuilder、入力値検証、操作ユーザーの限定 | discord.js guide: Select menus/Modals、Discord Components & Modals、データとセキュリティ |
Interaction は、処理に時間がかかる場合の応答方法と、結果を誰に見せるかが重要です。公開返信、本人だけに見せる返信、管理ログを機能ごとに分けます。
メッセージとチャンネル
メッセージ関連は、送信先、メンション、Embed、添付ファイル、削除権限で問題が分かれます。外部入力をそのまま本文やメンションに混ぜない設計が必要です。
| やりたいこと | 使う機能・考え方 | 参照先 |
|---|---|---|
| 送信・Embed・添付を扱いたい | channel send、EmbedBuilder、Allowed Mentions | Discord Message Resource、メッセージ逆引き |
| 削除・編集したい | Manage Messages 権限、対象メッセージ、監査ログ | Discord Permissions、メッセージ逆引き |
| リアクションを扱いたい | reaction event、partials、cache、emoji の比較 | discord.js guide: Reactions/Partials、メッセージ逆引き |
⚠️
@everyone、ロールメンション、ユーザー入力を含む通知は慎重に扱います。Allowed Mentions や入力検証を使い、意図しない大量通知を防ぎます。
サーバー管理
ロール付与、チャンネル作成、メンバー管理は、Bot の権限とロール階層に左右されます。型が合っていても、対象ロールや対象チャンネルに届かなければ失敗します。
| やりたいこと | 使う機能・考え方 | 参照先 |
|---|---|---|
| ロールを付与・削除したい | GuildMember、Role、Manage Roles、ロール階層 | Discord Permissions、サーバー管理逆引き |
| チャンネルを作りたい | guild channel create、権限上書き、カテゴリ | Discord Channel Resource、サーバー管理逆引き |
| 参加案内やBAN/Kickを扱いたい | guild member event、対象確認、理由、監査ログ、権限チェック | Discord Gateway/Guild、ライブラリ別トラブル |
サーバー管理機能では、実行者、対象者、理由、結果をログへ残します。利用者へ詳細な内部情報を見せすぎないようにします。
運用補助と外部連携
定期実行、外部API、DB、Webhook は、Discord 以外の失敗要因も含みます。timeout、retry、再起動、秘密情報の扱いを先に決めます。
| やりたいこと | 使う機能・考え方 | 参照先 |
|---|---|---|
| 定期実行したい | setInterval、cron、重複防止、再起動時の扱い | Node.js documentation、ホスティング逆引き |
| エラーを記録したい | try/catch、Promise rejection、利用者向け返信と管理ログ | エラー逆引き |
| DB・外部APIと連携したい | fetch、timeout、retry、APIキー管理、個人情報の最小化 | データとセキュリティ |
外部連携は失敗時の設計が重要です。重い処理は応答を保留するか処理を分け、二重実行を防ぎます。
確認ポイント
- Intent と partials を説明できる
- コマンド登録と Interaction 応答を別問題として見ている
- 権限とロール階層をテストサーバーで試した
- Token、Webhook URL、APIキーを公開していない