Bot を作る
Developer Portal でアプリを作成し、トークン取得 → サーバー招待まで。 トークンの取り扱いだけ最大限注意する。
1. Developer Portal で Application を作る
- https://discord.com/developers/applications にアクセス
- 右上の "New Application" をクリック
- 名前を入力して作成
- 左メニューの "Bot" を選択
2. トークンを取得
Bot タブで "Reset Token" ボタンを押すとトークンが表示される。 表示されるのは1度だけ。コピーして保存する(後でも再生成できる)。
トークンが漏れると、誰でもあなたの Bot として動かせる。
✗ Git に commit しない(必ず .gitignore に .env)
✗ スクショに含めない
✗ Discord 内に貼らない
漏れたら即座に Reset Token。Discord は漏洩トークンを検知すると自動で無効化することもある。
3. Privileged Gateway Intents を設定
Bot タブを下にスクロールすると"Privileged Gateway Intents" がある。 以下は明示的に有効化する必要がある:
- Presence Intent — メンバーのオンライン状態
- Server Members Intent — メンバー一覧の同期
- Message Content Intent — メッセージ本文を読む
100 サーバー以上のbot は申請審査が要る。それ未満(個人運用)はチェックを入れるだけで有効。 スラッシュコマンドだけならMessage Content Intent は不要。
4. OAuth2 URL でサーバーに招待
左メニューの "OAuth2" → "URL Generator"。
- Scopes:
bot+applications.commandsをチェック - Bot Permissions: 必要な権限を選ぶ(後述の表参照)
- 生成された URL をブラウザで開く
- サーバーを選んで「認証」
主要な Bot Permissions
| 権限 | 用途 |
|---|---|
Send Messages | メッセージ送信(必須レベル) |
Read Message History | 過去のメッセージを読む |
Manage Messages | メッセージの削除・ピン留め |
Embed Links | 埋め込みプレビューの表示許可 |
Attach Files | ファイル送信 |
Add Reactions | リアクション追加 |
Use Slash Commands | スラッシュコマンドの利用(招待時自動) |
Manage Roles | ロール付与・剥奪 |
Connect / Speak | 音声チャンネル接続・発声 |
Administrator | 全権限。個人 bot 以外では避ける |
生成 URL の例:
https://discord.com/api/oauth2/authorize
?client_id=YOUR_APP_ID
&permissions=2147485696
&scope=bot+applications.commands
5. テストサーバーを用意
本番サーバーで開発するのはリスクが大きい。個人用のテストサーバーを作るのが定石。
Discord で + ボタン → "Create My Own" → 自分用。
6. プロジェクトの初期化
mkdir my-bot && cd my-bot
npm init -y
npm install discord.js dotenv
npm install -D typescript @types/node tsx
.env:
DISCORD_TOKEN=ここに貼る
DISCORD_APP_ID=12345...
DISCORD_GUILD_ID=テストサーバーID
.gitignore:
node_modules
.env
*.log
7. 最小 Bot コード
import "dotenv/config"
import { Client, GatewayIntentBits, Events } from "discord.js"
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
],
})
client.once(Events.ClientReady, (c) => {
console.log(`Ready! Logged in as ${c.user.tag}`)
})
client.login(process.env.DISCORD_TOKEN)
8. 起動
npx tsx src/index.ts
コンソールに Ready! が出れば接続成功。
Discord でテストサーバーを開くとBot がオンラインになっているはず。
9. Application ID と Public Key
Developer Portal の "General Information" から:
- Application ID — スラッシュコマンド登録時に使う
- Public Key — HTTP Interactions(サーバレス)で署名検証時に使う
- Client Secret — OAuth2 で使う。トークンと同じく漏らさない
10. テストサーバー ID(Guild ID)の取得
Discord アプリの「開発者モード」を有効化:
- ユーザー設定 → 詳細設定 → 開発者モード ON
- サーバー名を右クリック → "サーバー ID をコピー"
この Guild ID は、開発時のスラッシュコマンドをそのサーバーだけに即時反映させるために使う(global 登録は伝播に最大1時間)。
よくあるトラブル
- Bot がオンラインにならない — トークンが間違い、または改行が混入
- "Used disallowed intents" — Privileged Intents をコードで要求しているが Portal で有効化していない
- サーバーに招待できない — OAuth2 URL の scope に
botが無い - 2FA 必須 — チームでアプリを管理する場合は Discord アカウントの 2FA が必須
✓ Bot がオンラインになる
✓ 自分が ping を打って bot から見える状態(テストサーバー)
✓ .env が .gitignore に入っている
ここまでで「土台」完成。次から discord.js の使い方に入る。