Python解説 第8回 Discordでおうむ返しするBotをPythonで作ってみよう!

Discordで発言された内容をそのまま繰り返す(おうむ返しする)BotをPythonで簡単に作成する方法をご紹介します。プログラミング初心者の方でも理解しやすいように、基本的なコードと手順を解説します。

準備するもの

  1. Pythonのインストール: Pythonがインストールされていない場合は、Pythonの公式サイトから最新版をダウンロードしてインストールしてください
  2. Discord Botアカウントの作成: Discord Developer Portalで新しいBotアプリケーションを作成し、Botトークンを取得します。以下の手順で行います。
    • Discord Developer Portal にアクセスし、「New Application」をクリックします。
    • Botの名前を入力し、「Create」をクリックします。
    • 左側のメニューから「Bot」を選択し、「Add Bot」をクリックします。
    • 「Token」セクションにある「Reset Token」をクリックし、表示されたトークンをコピーして安全な場所に保存します。このトークンはBotの認証情報となるため、絶対に他人に漏らさないでください。
    • 「Privileged Gateway Intents」の「Message Content Intent」をオンにします。これがないと、Botがメッセージの内容を読み取ることができません。

Pythonライブラリのインストール

Discord BotをPythonで開発するために、discord.pyというライブラリをインストールします。ターミナル(コマンドプロンプト)を開き、以下のコマンドを実行してください。

Bash

pip install discord.py

Botのコード作成

以下のPythonコードをテキストエディタにコピーし、echo_bot.pyなどの名前で保存してください。

Python

import discord

# Botのトークンをここに貼り付けます
TOKEN = 'YOUR_BOT_TOKEN'

# intentsオブジェクトを作成(Message Content Intentを有効にする)
intents = discord.Intents.default()
intents.message_content = True

# Botクライアントのインスタンスを作成
client = discord.Client(intents=intents)

# Botが起動したときに呼ばれるイベント
@client.event
async def on_ready():
    print(f'{client.user} としてログインしました')

# メッセージが送信されたときに呼ばれるイベント
@client.event
async def on_message(message):
    # Bot自身のメッセージには反応しない
    if message.author == client.user:
        return

    # 送信されたメッセージの内容をそのまま送信元のチャンネルに送信(おうむ返し)
    await message.channel.send(message.content)

# Botを起動
client.run(TOKEN)

コードの説明:

  • import discorddiscord.pyライブラリをインポートします。
  • TOKEN = 'YOUR_BOT_TOKEN': 先ほどDiscord Developer PortalでコピーしたBotのトークンをこの部分に貼り付けます。
  • intents = discord.Intents.default(): デフォルトのインテントを作成します。
  • intents.message_content = True: メッセージの内容を読み取るためのインテントを有効にします。
  • client = discord.Client(intents=intents): Discordクライアントのインスタンスを作成します。
  • @client.event\nasync def on_ready():: BotがDiscordに接続し、準備が完了したときに実行される関数です。ここでは、Botが正常にログインしたことをコンソールに表示しています。
  • @client.event\nasync def on_message(message):: サーバーに新しいメッセージが投稿されたときに実行される関数です。
    • if message.author == client.user:: 送信者がBot自身である場合は、処理をスキップします(無限ループを防ぐため)。
    • await message.channel.send(message.content): 送信されたメッセージの内容 (message.content) を、送信元のチャンネル (message.channel) に送信します。これがおうむ返しの処理です。
  • client.run(TOKEN): Botを起動し、Discordサーバーに接続します。

Botの実行

作成したPythonスクリプトを実行します。ターミナル(コマンドプロンプト)を開き、スクリプトを保存したディレクトリに移動して、以下のコマンドを実行してください。

Bash

python echo_bot.py

Botが正常に起動すると、コンソールに「[Botの名前] としてログインしました」と表示されます。

DiscordサーバーへのBotの招待

作成したBotをあなたのDiscordサーバーに招待する必要があります。

  1. Discord Developer Portal にアクセスし、作成したアプリケーションを選択します。
  2. 左側のメニューから「OAuth2」を選択し、「URL Generator」をクリックします。
  3. 「scopes」セクションで「bot」にチェックを入れます。
  4. 「bot permissions」セクションで、Botに必要な権限を選択します。基本的なおうむ返しBotであれば、「Send Messages」と「Read Messages/View Channels」の権限があれば十分でしょう。
  5. 生成されたURLをコピーし、Webブラウザで開きます。
  6. Botを招待したいサーバーを選択し、「認証」をクリックします。

動作確認

DiscordサーバーでBotがオンラインになっていることを確認し、適当なチャンネルでメッセージを送信してみてください。Botがあなたのメッセージをそのまま繰り返して送信すれば、おうむ返しBotは正常に動作しています。

発展

この基本的なおうむ返しBotをベースに、さまざまな機能を追加することができます。例えば、特定のキーワードに反応したり、コマンドを受け付けたり、外部のAPIと連携したりすることも可能です。

discord.pyのドキュメントや他のBot作成に関する情報を参考に、さらに面白いBot作りに挑戦してみてください。

注意点:

  • Botのトークンは絶対に公開しないでください。
  • Botを運用する際は、Discordの利用規約や開発者規約を遵守してください。
  • Botが予期しない動作をしないように、しっかりとテストを行いましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です