discord.pyを使って、決まったメッセージに返事をするだけの簡単なDiscordのBotを作ります。Pythonの開発環境がまだない場合は、以下の記事を参考にしてください。
VS Codeの拡張機能をインストール
VS CodeでPythonを書くために、以下の拡張機能を入れておきます。
Python - Visual Studio Marketplace(新しいタブで開く)
Pylance - Visual Studio Marketplace(新しいタブで開く)
Discord Botのセットアップ
- Discord Developer Portal(新しいタブで開く)にアクセスし、右上の[New Application]を押して新しいアプリケーションを作成します。
右上の[New Application]を押す - NameにBotの名前を設定し、規約とポリシーの同意にチェックを入れてから[Create]を押します。
NameにBotの名前を入れ、同意にチェックして[Create]を押す - Botメニューから「TOKEN」セクションの[Reset Token]を押します。アカウントのパスワードを入力するとTOKENが表示されるので忘れずにメモしておきます。トークンがあれば誰でもこのBotを操作できてしまうので、他人に教えたり、GitHubなどに公開したりしないでください。
[Reset Token]を押してトークンを発行する - Botメニューから「Privileged Gateway Intents」セクションの「MESSAGE CONTENT INTENT」にチェックを入れてください。Botがメッセージの本文を読むために必要な設定です。
「MESSAGE CONTENT INTENT」をオンにする
プロジェクトを作成する
VS Codeで新規プロジェクトを作成します。今回は「discord-bot-test」というフォルダにしています。
- プロジェクトの依存関係を管理しやすくするために、Pythonの仮想環境を作成してアクティベートします。
コマンドを実行すると
venvフォルダが作成されます。# 仮想環境を作成python3 -m venv venv# 仮想環境をアクティベートsource venv/bin/activate - Discord Botの開発に必要なdiscord.py(新しいタブで開く)をインストールします。
# discord.py ライブラリをインストールpip install discord.py
プログラムを作成する
- プロジェクトのルートディレクトリに
.envを作成します。Discord Botのセットアップ時に取得したトークンを=の右側に指定してください。
DISCORD_BOT_TOKEN=あなたが取得したトークンGitで管理する場合は、
.envとvenvを.gitignoreに書いて、リポジトリに含めないようにします。 - python-dotenv(新しいタブで開く)をインストールして、
.envから環境変数を読み込めるようにします。# python-dotenv パッケージをインストールpip install python-dotenv - プロジェクトのルートディレクトリに
bot.py(任意のファイル名でOK)を作成します。 - 以下のテストコードを記述します。
from dotenv import load_dotenvimport osimport discord# .envファイルから環境変数を読み込むload_dotenv()# 環境変数からトークンを取得するTOKEN = os.getenv('DISCORD_BOT_TOKEN')# 既定のインテント(特権インテント以外)を有効にしたIntentsオブジェクトを作成intents = discord.Intents.default()intents.message_content = True # メッセージの内容を受け取る(MESSAGE CONTENT INTENTが必要)# Discordのクライアントを作成client = discord.Client(intents=intents)@client.eventasync def on_ready(): print(f'{client.user}としてログインしました')@client.eventasync 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のテストサーバーを作成する
- Discordの左にある+アイコンをクリックします。
- 「オリジナルの作成」を選択します。
「オリジナルの作成」を選択します。 - とりあえずサーバーを作成したいだけなので「この質問をスキップ」を選択します。
質問には答えずスキップします。 - 任意のサーバー名を入れて「新規作成」を押します。
サーバー名を入力します。
Botをサーバーに追加する
- Discord Developer Portal(新しいタブで開く)にアクセスし、左のメニューから[OAuth2]タブを選択します。
- 「OAuth2 URL Generator」セクションにある「bot」にチェックを入れてスコープに追加します。
SCOPESで「bot」にチェックを入れる - すると下にさらに項目が出てくるので、「BOT PERMISSIONS」セクションで必要な権限にチェックを入れます。
今回は「Read Messages/View Channels」(メッセージを読む/チャンネルを見る)と「Send Messages」(メッセージを送信する)にチェックを入れます。
「Read Messages/View Channels」と「Send Messages」にチェックを入れる - 最後に「GENERATED URL」セクションにURLが生成されるので、コピーしてそのURLにアクセスします。
- 「サーバーに追加」の項目に先ほど作成したテストサーバーが出てくるのでそれを選択して、「はい」を選択します。
サーバーを選択して次に進みます。 - 次の項目もそのまま「認証」を押します。
そのまま認証を押します。 - Discordを見るとサーバーにBotがやってきました。
サーバーにBotが追加された
動作テストをする
「Botさん、こんにちは!」と送信するとBotが「こんにちは、<ユーザー名>さん!」と返すプログラムを書いたので動作するか確認します。
bot.pyを開いた状態でVS Codeの画面右上の▷を押すと、画面下部にターミナルが表示され、ファイルが実行されます。ターミナルでpython bot.pyを実行しても同じです。ターミナルに「〇〇としてログインしました」と表示されれば、Botが起動しています。
右上の▷を押して実行する - Discordに「Botさん、こんにちは!」と送信し、「こんにちは、<ユーザー名>さん!」と返ってくればテスト完了です。

Botに話しかけると返事が返ってくる
補足
Botは、bot.pyを実行している間だけ動きます。ターミナルを閉じたり、Control + Cで止めたりするとオフラインになります。
参考・引用
この記事は役に立ちましたか?