クイックスタート

ここでは、ライブラリの概要を説明します。ライブラリがインストールされていることを前提としているので、インストールを終えていない人は インストール を参照してください。

最小限のBot

Let's make a bot that responds to a specific message and walk you through it.

結論から書くと、このように書くことができます。

import discord

client = discord.Client()

@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 というファイル名にはしないでください。

さて、では順を追って一つづつ説明していきます。

  1. 最初の行は、ただライブラリをインポートしただけです。 ModuleNotFoundErrorImportError が発生した場合は インストール を見て、ライブラリをきちんとインストールしましょう。

  2. 次に、 Client のインスタンスを作成します。クライアントはDiscordへの接続を行います。

  3. 続いて、 Client.event() デコレータを使用してイベントを登録します。ライブラリにはたくさんのイベントが用意されています。このライブラリは非同期のため、「コールバック」のスタイルで処理を行います。

    コールバックは基本的に、何かが発生した場合に呼び出される関数です。今回の場合だと、Botがログインして、設定などを終えたときに on_ready() が、メッセージを受信したときに on_message() が呼び出されます。

  4. on_message() イベントは受信したメッセージすべてに対して呼び出されるため、Bot自身からのメッセージは無視するように設定する必要があります。これは、メッセージの送信者である Message.author と、Bot自身を表す Client.user が等しいか比較することで実装できます。

  5. Afterwards, we check if the Message.content starts with '$hello'. If it does, then we send a message in the channel it was used in with 'Hello!'. This is a basic way of handling commands, which can be later automated with the discord.ext.commands -- ボットコマンドのフレームワーク framework.

  6. 最後に、ログイン用トークンを用いてBotを起動します。トークンの取得やBotの作成について分からないことがあれば、 Botアカウント作成 を参照してください。

さて、これでBotは完成なので、Botを 実行 してみましょう。幸いにも、これはただのPythonスクリプトなので実行は簡単です。直接実行が可能です。

Windowsの場合:

$ py -3 example_bot.py

その他のシステムの場合:

$ python3 example_bot.py

これで、あなたが作ったBotと遊ぶことができます。