DiscordBotの作成

目次

はじめに

Discordで入退出を発言するBOTが付くたくなったので、そのメモ。Herokuにデプロイしています。

Chocolateyのインストール

もしまだChocolateyをインストールしていない場合、以下の手順でインストールできます。

  1. 管理者としてPowerShellを開く:

    • スタートメニューを開き、「PowerShell」と入力し、検索結果に表示される「Windows PowerShell」を右クリックして「管理者として実行」を選択します。
  2. PowerShellの実行ポリシーを設定:

    • 以下のコマンドを実行して、スクリプトの実行ポリシーを変更します。これは一時的な設定です。

      Set-ExecutionPolicy Bypass -Scope Process -Force
      
  3. Chocolateyのインストール:

    • 以下のコマンドを実行して、Chocolateyをインストールします。

      iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
      
    • インストールが完了したら、PowerShellを再起動します。

Node.jsのインストール

Chocolateyをインストールしたら、次の手順でNode.jsをインストールできます。

  1. 管理者としてPowerShellまたはコマンドプロンプトを開く:

    • 再度、管理者としてPowerShellまたはコマンドプロンプトを開きます。
  2. Node.jsのインストール:

    • 以下のコマンドを実行して、Node.jsをインストールします。

      choco install nodejs
      
    • 必要に応じて、LTSバージョンをインストールすることもできます。

      choco install nodejs-lts
      
  3. インストールの確認:

    • インストールが完了したら、以下のコマンドを実行してNode.jsとnpmが正しくインストールされているか確認します。

      node -v
      npm -v
      

これで、Chocolateyを使用してNode.jsがインストールされました。

アプリの作成

このあたりを参考にアプリを開発していきます。乗っているコードは私の環境では動かなかったので、ChatGPTに書いてもらいました。

プロジェクトセットアップ

任意のディレクトリに移動し、以下のコマンドを実行して新しい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の取得方法

  1. Discordの設定で「開発者モード」を有効にします。
  • Discordを開き、ユーザー設定(歯車アイコン)をクリックします。
  • 左側のメニューから「高度な設定」を選択し、「開発者モード」をオンにします。
  1. 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での動かし方。

  1. Heroku CLIのインストール Heroku CLI からダウンロードします。

  2. Herokuアカウントの作成 まだアカウントを持っていない場合は、Herokuでアカウントを作成します。

  3. Herokuにログイン CLIを使ってHerokuにログインします。

    heroku login
    
  4. 新しいアプリケーションの作成 Herokuに新しいアプリケーションを作成します。

    heroku create your-app-name
    
  5. 環境変数の設定 アプリケーションで使用する環境変数を設定します。

    heroku config:set DISCORD_BOT_TOKEN=your-bot-token-here
    heroku config:set DISCORD_CHANNEL_ID=your-channel-id-here
    
  6. 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"
      }
    }
    
  7. Procfileの作成 プロジェクト直下に以下を作成します。Herokuにプロセスの開始方法を伝えるためのファイルです。

    worker: node index.js
    
  8. Gitリポジトリの作成 以下のコマンドを使用して、Gitリポジトリを初期化します。

    git init
    git add .
    git commit -m "Initial commit"
    
  9. アプリケーションのデプロイ

    git push heroku master
    
  10. Heroku Dynoのスケール アプリケーションを実行するために、HerokuのDynoをスケールします。

    heroku ps:scale worker=1
    
  11. ログの確認 リアルタイムでログを確認して、アプリケーションが正常に動作しているかを確認します。

    heroku logs --tail