DiscordBotの作成
はじめに
Discordで入退出を発言するBOTが付くたくなったので、そのメモ。Herokuにデプロイしています。
Chocolateyのインストール
もしまだChocolateyをインストールしていない場合、以下の手順でインストールできます。
管理者としてPowerShellを開く:
- スタートメニューを開き、「PowerShell」と入力し、検索結果に表示される「Windows PowerShell」を右クリックして「管理者として実行」を選択します。
PowerShellの実行ポリシーを設定:
以下のコマンドを実行して、スクリプトの実行ポリシーを変更します。これは一時的な設定です。
Set-ExecutionPolicy Bypass -Scope Process -Force
Chocolateyのインストール:
以下のコマンドを実行して、Chocolateyをインストールします。
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
インストールが完了したら、PowerShellを再起動します。
Node.jsのインストール
Chocolateyをインストールしたら、次の手順でNode.jsをインストールできます。
管理者としてPowerShellまたはコマンドプロンプトを開く:
- 再度、管理者としてPowerShellまたはコマンドプロンプトを開きます。
Node.jsのインストール:
以下のコマンドを実行して、Node.jsをインストールします。
choco install nodejs
必要に応じて、LTSバージョンをインストールすることもできます。
choco install nodejs-lts
インストールの確認:
インストールが完了したら、以下のコマンドを実行してNode.jsとnpmが正しくインストールされているか確認します。
node -v npm -v
これで、Chocolateyを使用してNode.jsがインストールされました。
アプリの作成
このあたりを参考にアプリを開発していきます。乗っているコードは私の環境では動かなかったので、ChatGPTに書いてもらいました。
- サルでもわかる Discord Botの作り方① ~開発環境を作ろう!~ | なりかくんのブログ
- サルでもわかる Discord Botの作り方② ~デバッグ環境の準備~ | なりかくんのブログ
- サルでもわかる Discord Botの作り方③ ~Discord Botアカウントの作成~ | なりかくんのブログ
- サルでもわかる Discord Botの作り方④ ~メンバーが参加したら通知するBot~ | なりかくんのブログ
プロジェクトセットアップ
任意のディレクトリに移動し、以下のコマンドを実行して新しいNode.jsプロジェクトを初期化します。
mkdir discord-bot
cd discord-bot
npm init -y
Discord.jsライブラリをインストールします。
npm install discord.js
必要なパッケージのインストールします。
npm install discord.js dotenv
プロジェクトのルートディレクトリに.envファイルを作成し、以下のようにTokenとチャンネルIDを設定します。
DISCORD_BOT_TOKEN=your-bot-token-here
DISCORD_CHANNEL_ID=your-channel-id-here
チャンネルIDの取得方法
- Discordの設定で「開発者モード」を有効にします。
- Discordを開き、ユーザー設定(歯車アイコン)をクリックします。
- 左側のメニューから「高度な設定」を選択し、「開発者モード」をオンにします。
- Botがメッセージを送信したいチャンネルを右クリックして「IDをコピー」を選択します。 ちなみにチャンネルIDを書く時は以下のようにして、““は不要
DISCORD_BOT_TOKEN=MTI2NTMxMDYxMDA2OTkxNzc1NA.GjdipY.uEYmJ4hNxeafdsaa3sa3jasfasfasfasfsaaa8mBfJlOo_3sk
DISCORD_CHANNEL_ID=12643343434316
プロジェクトディレクトリにindex.jsファイルを作成し、以下のコードを追加します。
require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers] });
const token = process.env.DISCORD_BOT_TOKEN;
const channelId = process.env.DISCORD_CHANNEL_ID;
client.once('ready', () => {
console.log('Ready!');
});
client.on('guildMemberAdd', member => {
const channel = member.guild.channels.cache.get(channelId);
if (!channel) return;
channel.send(`${member}が入室しました。`);
});
client.on('guildMemberRemove', member => {
const channel = member.guild.channels.cache.get(channelId);
if (!channel) return;
channel.send(`${member} が退出しました。`);
});
client.login(token);
アプリの実行は以下で行う。ここまでやってエラーが出てないことを確認する。
node index.js
Herokuで動かす。
Herokuでの動かし方。
Heroku CLIのインストール Heroku CLI からダウンロードします。
Herokuアカウントの作成 まだアカウントを持っていない場合は、Herokuでアカウントを作成します。
Herokuにログイン CLIを使ってHerokuにログインします。
heroku login
新しいアプリケーションの作成 Herokuに新しいアプリケーションを作成します。
heroku create your-app-name
環境変数の設定 アプリケーションで使用する環境変数を設定します。
heroku config:set DISCORD_BOT_TOKEN=your-bot-token-here heroku config:set DISCORD_CHANNEL_ID=your-channel-id-here
package.jsonの作成 以下をプロジェクト直下に作成します。
{ "name": "discord-bot", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "discord.js": "^14.0.0", "dotenv": "^16.0.0" } }
Procfileの作成 プロジェクト直下に以下を作成します。Herokuにプロセスの開始方法を伝えるためのファイルです。
worker: node index.js
Gitリポジトリの作成 以下のコマンドを使用して、Gitリポジトリを初期化します。
git init git add . git commit -m "Initial commit"
アプリケーションのデプロイ
git push heroku master
Heroku Dynoのスケール アプリケーションを実行するために、HerokuのDynoをスケールします。
heroku ps:scale worker=1
ログの確認 リアルタイムでログを確認して、アプリケーションが正常に動作しているかを確認します。
heroku logs --tail