Python解説 第8回 Discordでおうむ返しするBotをPythonで作ってみよう!
Discordで発言された内容をそのまま繰り返す(おうむ返しする)BotをPythonで簡単に作成する方法をご紹介します。プログラミング初心者の方でも理解しやすいように、基本的なコードと手順を解説します。
準備するもの
- Pythonのインストール: Pythonがインストールされていない場合は、Pythonの公式サイトから最新版をダウンロードしてインストールしてください
- 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 discord
:discord.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サーバーに招待する必要があります。
- Discord Developer Portal にアクセスし、作成したアプリケーションを選択します。
- 左側のメニューから「OAuth2」を選択し、「URL Generator」をクリックします。
- 「scopes」セクションで「bot」にチェックを入れます。
- 「bot permissions」セクションで、Botに必要な権限を選択します。基本的なおうむ返しBotであれば、「Send Messages」と「Read Messages/View Channels」の権限があれば十分でしょう。
- 生成されたURLをコピーし、Webブラウザで開きます。
- Botを招待したいサーバーを選択し、「認証」をクリックします。
動作確認
DiscordサーバーでBotがオンラインになっていることを確認し、適当なチャンネルでメッセージを送信してみてください。Botがあなたのメッセージをそのまま繰り返して送信すれば、おうむ返しBotは正常に動作しています。
発展
この基本的なおうむ返しBotをベースに、さまざまな機能を追加することができます。例えば、特定のキーワードに反応したり、コマンドを受け付けたり、外部のAPIと連携したりすることも可能です。
discord.py
のドキュメントや他のBot作成に関する情報を参考に、さらに面白いBot作りに挑戦してみてください。
注意点:
- Botのトークンは絶対に公開しないでください。
- Botを運用する際は、Discordの利用規約や開発者規約を遵守してください。
- Botが予期しない動作をしないように、しっかりとテストを行いましょう。