node.jsでDiscordのbot開発をしよう!
導入部
Discordはゲーマーだけでなく多くのオンラインコミュニティで広く使われています。
Node.jsを使ってDiscordサーバーのためのカスタムボットを作成する方法をステップバイステップで解説します。プログラミングの基本知識があれば、誰でも簡単にボットを作成し、自分のサーバーをカスタマイズすることができます。
下記の手順はWindows、ローカル環境の構築方法です。
PCの電源をオフするとBotがオフラインになり使用できなくなります。
24時間稼働環境が必要な場合はVPSサーバを借りましょう。
基本的な準備
1. Node.jsのインストール
最初のステップとして、Node.jsをあなたのコンピュータにインストールする必要があります。Node.js公式サイトからインストーラをダウンロードして実行しましょう。
インストールが完了したらコマンドプロンプトで
node -v
と送信し
v20.11.1
とバージョンが表示していればOKです。
ここまでは初回のみでOK
2. Discordボットアカウントの作成
Discordの開発者ポータルにアクセスし、新しいアプリケーションを作成します。アプリケーションを作成したら、「Bot」セクションでボットを追加し、トークンを安全な場所に保存しておきます。
「Applications」 → 「New Applivcation」 のボタンをクリック

ボット名を入力してから、「Create」のボタンをクリック

Botのアイコンを設定や説明文を書く場合はここから

「Bot」のタブを選択、tokenの項目の[refresh Token]をクリック
表示されたtokenはbotを作るフォルダにメモ帳で保存しておいてください

このトークンは人に教えることが無いように気を付けてください。
Botの権限設定
tokenの下の方に行くと

3.Privileged Gateway Intentsとは
1. Presence Intent
- 目的: ユーザーのオンライン状態やアクティビティ(例: ゲームプレイ中)などのプレゼンス情報の更新を受け取るために必要です。
2. Server Members Intent
- 目的: サーバーメンバーに関するイベント(例: ユーザーのサーバー参加や退出)を受け取るために必要です。
3. Message Content Intent
- 目的: メッセージの内容を読み取るために必要です。これは特に、メッセージに基づいたコマンド実行や反応をボットが行う場合に重要です。
Botによって権限を設定しておくのが望ましいです。
練習なので全部ONにしておきましょう。
OAuth2設定
OAuth2 URL Generatorの中にある
[bot]にチェック
Bot Permissionsの中に
[Administrator]にチェック
[Administrator]にチェックを入れましたがBotによってチェックする項目を変えましょう。
練習で毎回権限を変えるのが大変なのでAdministratorに入れています。
※Administratorは管理者権限にチェックを入れると何でもできてしまうBotが出来てしまいます。
Generated URLをCopyしブラウザに貼り付けてBotを管理しているサーバに入れましょう。

Botが管理しているサーバに入ったことを確認

まだBotを起動していないためオフラインのままです。
tokenの書き換えでできることを除きBotを作成する度に必要です。
プログラミング
1. プロジェクトの設定
新しいプロジェクトフォルダを作成し、コマンドラインで以下のコマンドを実行してnpmパッケージを初期化します。
npm init -y
2. 必要なライブラリのインストール
Discord.jsライブラリをインストールします。
npm install discord.js
インストール後下記のコマンドでバージョンが表示していれば成功です。
C:\Users\test-bot>npm list discord.js
test@1.0.0 C:\Users\
`-- discord.js@14.15.2
初回のみでOK
3. ボットのコードを書く
エディタを開いて、ボットの基本的な機能をコーディングします。ここでは、Discordサーバーに参加しているユーザーに挨拶するシンプルなボットを作成します。
下記のコードをbot用のフォルダを作成しその中に保存してください
ファイル名は.jsで保存してください。
今回は[test-bot]フォルダの中に[bot.js]で保存しています。
// discord.js ライブラリを読み込む
const { Client, GatewayIntentBits } = require('discord.js');
// Intentsのリストを定義する
// IntentsはボットがDiscordサーバーのどの情報にアクセスするかをDiscord APIに伝える
const client = new Client({
intents: [
GatewayIntentBits.Guilds, // サーバの情報にアクセスするために必要
GatewayIntentBits.GuildMessages, // サーバのメッセージイベントを受け取るために必要
GatewayIntentBits.MessageContent // メッセージの内容を受け取るために必要
]
});
// ボットが準備完了したときに実行されるイベント
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`); // ボットのログインが完了したらコンソールに表示
});
// メッセージを受け取ったときに実行されるイベント
client.on('messageCreate', message => {
if (message.content === 'hello') { // ユーザーが 'hello' と送信した場合
message.channel.send('Hello!'); // 'Hello!' と返信する
}
});
// ボットをDiscordにログインさせる
client.login('ご自分のトークン');
コマンドプロンプトで[test-bot]フォルダに移動
C:\Users\>cd test-bot
Botを起動
C:\Users\test-bot>node bot.js
Logged in as test-bot#0790!
Logged in as ボット名!と表示されていれば成功です。
この部分はコードの20行目~24行目のコードの内容で設定しています。
エラーになった場合はコードのスペルミスがないかチェックしてください。
DiscordのメンバーリストのBotがオンラインになっているはずです。

どのチャンネルでもいいので[hello]と打って送信してみてください。

Botが[Hello!]と返してくれれば成功です!
エラーになった場合はコードのスペルミスがないかチェックしてください。
^C
C:\Users\test-bot>
Ctrl+Cキーを押すとBotが停止します。
コメント