node.jsでDiscordのbot開発①

thumbnail

node.jsでDiscordのbot開発をしよう!

導入部

Discordはゲーマーだけでなく多くのオンラインコミュニティで広く使われています。
Node.jsを使ってDiscordサーバーのためのカスタムボットを作成する方法をステップバイステップで解説します。プログラミングの基本知識があれば、誰でも簡単にボットを作成し、自分のサーバーをカスタマイズすることができます。

下記の手順はバージョンなどにより異なります。
表記や手順が変わる場合があります。
ご注意ください。

下記の手順はWindows、ローカル環境の構築方法です。
PCの電源をオフするとBotがオフラインになり使用できなくなります。
24時間稼働環境が必要な場合はVPSサーバを借りましょう。

基本的な準備

1. Node.jsのインストール

最初のステップとして、Node.jsをあなたのコンピュータにインストールする必要があります。Node.js公式サイトからインストーラをダウンロードして実行しましょう。

2024/04/01現在
Node.js v20.11.1

インストールが完了したらコマンドプロンプトで

node -v

と送信し

v20.11.1

とバージョンが表示していればOKです。

ここまでは初回のみでOK

2. Discordボットアカウントの作成

Discordの開発者ポータルにアクセスし、新しいアプリケーションを作成します。アプリケーションを作成したら、「Bot」セクションでボットを追加し、トークンを安全な場所に保存しておきます。

「Applications」 → 「New Applivcation」 のボタンをクリック
New Applivcation
New Applivcation
ボット名を入力してから、「Create」のボタンをクリック
create
create
Botのアイコンを設定や説明文を書く場合はここから
icon
icon
「Bot」のタブを選択、tokenの項目の[refresh Token]をクリック

表示されたtokenはbotを作るフォルダにメモ帳で保存しておいてください

token
token

このトークンは人に教えることが無いように気を付けてください。

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を管理しているサーバに入れましょう。

OAuth2設定
OAuth2設定
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]と打って送信してみてください。

hello
hello

Botが[Hello!]と返してくれれば成功です!

エラーになった場合はコードのスペルミスがないかチェックしてください。

^C
C:\Users\test-bot>

Ctrl+Cキーを押すとBotが停止します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

独学プログラマーです。
わからないことはgoogle大先生に聞いています。

プログラムは難しい!

コメント

コメントする