Pythonで簡易的なDiscordのBotを作成する

投稿日:

更新日:

VS Codeの拡張機能をインストール

Discord Botのセットアップ

  1. Discord Developer Potalにアクセスし、右上の[New Application]を押下して新しいアプリケーションを作成します。
  2. NemeにBotの名前を設定し、規約とポリシーの同意にチェックを入れてから[Create]を押下します。
  3. Botメニューから「TOKEN」セクションの[Reset Token]を押下します。アカウントのパスワードを入力するとTOKENが表示されるので忘れずにメモしておきます。
    トークンは悪用されないように他人に教えないでください。
  4. Botメニューから「Privileged Gateway Intents」セクションの「MESSAGE CONTENT INTENT」にチェックを入れてください。
    BotのPrivileged Gateway Intents設定画面
    BotのPrivileged Gateway Intents設定画面

プロジェクトを作成する

VS Codeで新規プロジェクトを作成します。今回は「discord-bot-test」というフォルダにしています。

  1. プロジェクトの依存関係を管理しやすくするために、Pythonの仮想環境を作成してアクティベートします。

    コマンドを実行するとvenvフォルダが作成されます。

    ターミナル
    # 仮想環境を作成
    python3 -m venv venv
    
    # 仮想環境をアクティベート
    source venv/bin/activate
  2. Discord Botの開発に必要なdiscord.pyをインストールします。
    ターミナル
    # discord.py ライブラリをインストール
    pip install discord.py

プログラムを作成する

  1. プロジェクトのルートディレクトリに.envを作成します。

    Discord Botのセットアップ時に取得したトークンを=の右側に指定してください。

    .env
    DISCORD_BOT_TOKEN=あなたが取得したトークン
  2. python-dotenvをインストールして、.envから環境変数を読み込めるようにします。
    ターミナル
    # python-dotenv パッケージをインストール
    pip install python-dotenv
  3. プロジェクトのルートディレクトリにbot.py(任意のファイル名でOK)を作成します。
  4. 以下のテストコードを記述します。
    bot.py
    from dotenv import load_dotenv
    import os
    import discord
    
    # .envファイルから環境変数を読み込む
    load_dotenv()
    
    # 環境変数からトークンを取得する
    TOKEN = os.getenv('DISCORD_BOT_TOKEN')
    
    # すべてのイベントに対して反応するIntentsオブジェクトを作成
    intents = discord.Intents.default()
    intents.message_content = True # メッセージの内容を受け取るための権限を付与
    
    # Discordのクライアントを作成
    client = discord.Client(intents=intents)
    
    @client.event
    async def on_ready():
      print(f'{client.user}としてログインしました')
    
    @client.event
    async def on_message(message):
      # Bot自身のメッセージには反応しないようにする
      if message.author.bot:
        return
      
      # 'Botさん、こんにちは!'というメッセージに反応する
      if message.content == 'Botさん、こんにちは!':
        # メッセージ送信者の表示名を取得
        user_name = message.author.display_name
        # 応答するメッセージを作成
        response = f'こんにちは、{user_name}さん!'
        await message.channel.send(response)
    
    client.run(TOKEN)

DIscordのテストサーバーを作成する

  1. Discordの左にある+アイコンをクリックします。
  2. 「オリジナルの作成」を選択します。
    Discordのサーバー作成画面
    「オリジナルの作成」を選択します。
  3. とりあえずサーバーを作成したいだけなので「この質問をスキップ」を選択します。
    Discordの質問画面
    質問には答えずスキップします。
  4. テキトーにサーバー名を入れて「新規作成」を押下します。
    Discordのサーバーのカスタマイズ画面
    サーバー名を入力します。

Botをサーバーに追加する

  1. Discord Developer Potalにアクセスし、左のメニューから[OAuth2]タブを選択します。
  2. 「OAuth2 URL Generator」セクションにある「bot」にチェックを入れてスコープに追加します。
    DiscordのOAuth2 URL Generator画面
    DiscordのOAuth2 URL Generator画面
  3. すると下にさらに項目がでてくるので、「BOT PERMISSIONS」セクションで必要な権限にチェックを入れます。

    今回は「Read Messages/View Channels」(メッセージを読む/チャンネルを見る)と「Send Messages」(メッセージを送信する)にチェックを入れます。

    DiscordのBOT PERMISSIONS画面
    DiscordのBOT PERMISSIONS画面
  4. 最後に「GENERATED URL」セクションにURLが生成されるので、コピーしてそのURLにアクセスします。
  5. 「サーバーに追加」の項目に先ほど作成したテストサーバーが出てくるのでそれを選択して、「はい」を選択します。
    Discordの外部アプリケーション追加画面
    サーバーを選択して次に進みます。
  6. 次の項目もそのまま「認証」を押下します。
    DIscordの権限の確認画面
    そのまま認証を押します。
  7. Discordを見るとサーバーにBotがやってきました!
    DiscordにBotが追加された画面
    DiscordのサーバーにBotが追加される

動作テストをする

「Botさん、こんにちは!」と送信するとBotが「こんにちは、<ユーザー名>さん!」と返すプログラムを書いたので動作するか確認します。

  1. VS Codeの画面右上の▷を押下すると、画面下部にターミナルが表示され、ファイルが実行されます。
    VS Code画面右上の実行ボタン
    VS Code画面右上の実行ボタン
  2. Discordに「Botさん、こんにちは!」と送信すると「こんにちは、<ユーザー名>さん!」と返って来ればテスト完了です。
    DiscordでBotから応答が返ってくる様子
    DiscordでBotから応答が返ってくる

この記事をシェアする