クイックスタート¶
ここでは、ライブラリの概要を説明します。ライブラリがインストールされていることを前提としているので、インストールを終えていない人は インストール を参照してください。
最小限のBot¶
特定のメッセージに対して返事をするBotを作ってみましょう。一通り説明していきます。
結論から書くと、このように書くことができます。
# This example requires the 'message_content' intent.
import discord
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
client.run('your token here')
ファイルの名前を example_bot.py
としましょう。ライブラリと競合してしまうので、 discord.py
というファイル名にはしないでください。
さて、では順を追って一つづつ説明していきます。
最初の行は、ただライブラリをインポートしただけです。
ModuleNotFoundError
やImportError
が発生した場合は インストール を見て、ライブラリをきちんとインストールしましょう。次に、
Client
のインスタンスを作成します。クライアントはDiscordへの接続を行います。続いて、
Client.event()
デコレータを使用してイベントを登録します。ライブラリにはたくさんのイベントが用意されています。このライブラリは非同期のため、「コールバック」のスタイルで処理を行います。コールバックは基本的に、何かが発生した場合に呼び出される関数です。今回の場合だと、Botがログインして、設定などを終えたときに
on_ready()
が、メッセージを受信したときにon_message()
が呼び出されます。on_message()
イベントは受信したメッセージすべてに対して呼び出されるため、Bot自身からのメッセージは無視するように設定する必要があります。これは、メッセージの送信者であるMessage.author
と、Bot自身を表すClient.user
が等しいか比較することで実装できます。その後、
Message.content
が'$hello'
から始まるかどうかを確認し、当てはまればそのチャンネルに'Hello!'
という返事を送信します。これはコマンドを処理する基本的な方法であり、後で discord.ext.commands -- ボットコマンドのフレームワーク フレームワークを使用して自動化できます。最後に、ログイン用トークンを用いてBotを起動します。トークンの取得やBotの作成について分からないことがあれば、 Botアカウント作成 を参照してください。
さて、これでBotは完成なので、Botを 実行 してみましょう。幸いにも、これはただのPythonスクリプトなので実行は簡単です。直接実行が可能です。
Windowsの場合:
$ py -3 example_bot.py
その他のシステムの場合:
$ python3 example_bot.py
これで、あなたが作ったBotと遊ぶことができます。