【discord.py】特定の言葉に反応して自動返信するBotの作り方

DiscordBot

Discordで「おはよう」と誰かが投稿したら、Botが自動で「おはようございます!」と返信してくれたら、サーバーがもっと楽しくなりますよね。この記事では、プログラミング初心者の方でも簡単に実装できるように、特定のキーワードに反応して自動でメッセージを返すDiscord Botの作り方を、ステップバイステップで解説します。

準備するもの

  • Python環境
    PCにPythonがインストールされている必要があります。
  • discord.pyライブラリ
  • BOTトークン
    Discord Developer Portalで自分のBotを作成し、トークンを取得します。

Python環境の構築、BOTトークンの取得方法は以下の記事で紹介しています。

1.実行ファイルの作成

今回はWindows11環境でのセットアップ解説です。
エクスプローラーを開き、任意のフォルダを作りましょう。
ユーザーフォルダの直下がおすすめです。

フォルダを開いて、新規作成>テキストドキュメントを作成します。
ファイル名もわかりやすいもので構いません。(今回はreturnとしています)

ダブルクリックをするとメモ帳が開きます。
以下のソースコードをコピー&ペーストしてください。
最初の方にあるTOKEN = ‘あなたのBOTトークン’の部分を、ご自身で取得したトークンに書き換えて保存してください。

import discord

# Botのアクセストークン
TOKEN = 'あなたのBOTトークン'

# 接続に必要なオブジェクトを生成
# メッセージの内容を取得するインテントを有効にする
intents = discord.Intents.default()
intents.message_content = True
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

    # 「おはよう」というメッセージに反応する
    if message.content == 'おはよう':
        # メッセージが送られてきたチャンネルに「おはようございます!」と返信する
        await message.channel.send('おはようございます!')
        
    # 「おやすみ」というメッセージに反応する
    if 'おやすみ' in message.content:
        # メッセージが送られてきたチャンネルにリアクションをつける
        await message.add_reaction('😴')


# Botの起動と接続
client.run(TOKEN)

エクスプローラーに戻り、
表示>表示>ファイル名拡張子にチェックを入れてください。

名前の変更でtxt部分をpyに変えてください。
これでPythonのファイルになります。

2.discord.pyライブラリのインストール

画面左下のWindowsスタートボタンを押し、キーボードで「cmd」と入力します。表示された「コマンド プロンプト」をクリックして起動してください。

黒い画面が表示されたら、以下のコマンドを入力し、Enterキーを押します。

pip install discord.py

3.ファイルの実行

いよいよファイルの実行です。

先ほど作成したpyファイルをダブルクリックで実行しましょう!

「〇〇としてログインしました」と表示されたら成功です!

4.Botをサーバーに追加する

Discord Developer PortalでBotを選択したページで表示される、APPLICATION IDというものを控えてください。

以下のURLのAPPLICATION IDの箇所を控えた数字と置き換えてください。

https://discord.com/oauth2/authorize?client_id=APPLICATION ID&permissions=67584&integration_type=0&scope=bot

できたURLにアクセスするとDiscordでBot追加のページが立ち上がります。

5.Botを使ってみよう

追加したサーバーに「おはよう」と送ってみましょう!

Botから「おはようございます!」と返ってきましたね!!

次に「そろそろおやすみ」と送ってみましょう!

Botから😴のリアクションがきましたね!

Botを停止したい場合は、ターミナルで Ctrl + C を押してください。

コードの解説

先ほどのコードの解説をしていきます。

import discord
discord.pyライブラリをインポート(使えるように)します。

TOKEN
あなたのトークンです。

intents = discord.Intents.default()
Botがサーバーからどのような情報を受け取るかを設定する「インテント」を準備します。

intents.message_content = True
Botがメッセージの内容を読み取れるように、インテントを有効化します。これがFalseのままだと、メッセージの内容が取得できず、キーワードに反応できません。

client = discord.Client(intents=intents)
上記で設定したインテントを適用して、Discordに接続するためのクライアントオブジェクトを作成します。

@client.event
Botで何かイベント(例: 起動、メッセージ受信)が発生したときに実行する処理を定義するためのものです。

async def on_ready():
BotがDiscordに正常に接続し、起動したときに一度だけ実行される処理です。ここでは、ターミナルに「ログインしました」と表示させて、正常に起動したことを確認できるようにしています。

async def on_message(message):
サーバーで誰かがメッセージを送信するたびに実行される、このBotのメインとなる処理です。引数の message には、送信されたメッセージの情報(内容、送信者、チャンネルなど)がすべて入っています。

if message.author.bot:
メッセージの送信者がBot自身だった場合に、それ以降の処理を行わないようにしています。これがないと、Botが自分のメッセージに無限に反応し続けてしまう「無限ループ」が発生します。

if message.content == ‘おはよう’:
受信したメッセージの内容 (message.content) が、「おはよう」という文字列と完全に一致した場合に、次の処理に進みます。

await message.channel.send(‘おはようございます!’)
メッセージが送信されたチャンネル (message.channel) に、「おはようございます!」という文字列を送信します。

if ‘おやすみ’ in message.content:
メッセージの内容に「おやすみ」という文字列が含まれている場合に反応します。例えば「そろそろおやすみ」にも反応します。

await message.add_reaction(‘😴’)
メッセージに対して、絵文字でリアクションをつけます。

client.run(TOKEN)
設定したトークンを使って、Botを起動します。

まとめ

お疲れ様でした!特定の言葉に反応するBotを作れましたね!

応用してあなただけのBotを作ってみてくださいね!!

コメント