Python
bot
discord

Pythonで簡単なDiscord Botの作り方

今回作るもの

Discordで 「おはよう」 と入力すると 「おはようございます、"ユーザー名"さん!」 と返事をする簡単なBotを作ります。後から反応する言葉を変えたりできます。
ほとんど公式Githubにあるクイックスタートと同じ内容です。

Discordとは

最近はやってるゲーマー用のチャットアプリです。Slackと少し似ていてボットが開発しやすい環境となっています。

あらかじめやっておくこと

  • Python3の環境を作る
  • Pythonを書くテキストエディタを入れていく

discord.pyのダウンロード

discord.pyをpipを使ってインストールします。

python3 -m pip install -U discord.py

Bot用のトークンを手に入れる

DiscordのDeveloperのサイトに言って新しいBotを登録します

まずMy AppsのでNew Appをクリックします。

次にAPP NAMEに好きな名前を書きます
New App Picture

ページを少しスクロールしてBotの欄でCreate a Bot UserをクリックしてYes, do it
Create a bot User Picture

またBotの欄に行ってTokenを確認します (これを後で使います)

Generate OAuth2 URL を押して Bot だけがチェックされた状態で、下のURLの先に飛びます

自分のサーバーを選んで追加します

Botを書く

実際に書いていきましょう

まずはdiscord.pyのパッケージをインポートします

import discord

client = discord.Client()

次にBotがログインし準備が完了した時の処理を書きます
(コピペでもいいと思います)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

返事をさせるためのコードを書きます

@client.event
async def on_message(message):
    # 「おはよう」で始まるか調べる
    if message.content.startswith("おはよう"):
        # 送り主がBotだった場合反応したくないので
        if client.user != message.author:
            # メッセージを書きます
            m = "おはようございます" + message.author.name + "さん!"
            # メッセージが送られてきたチャンネルへメッセージを送ります
            await client.send_message(message.channel, m)

最後にBotをスタートします

# token にDiscordのデベロッパサイトで取得したトークンを入れてください
client.run("token")

全体のコードをまとめて書くと

main.py
import discord

client = discord.Client()

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

@client.event
async def on_message(message):
    # 「おはよう」で始まるか調べる
    if message.content.startswith("おはよう"):
        # 送り主がBotだった場合反応したくないので
        if client.user != message.author:
            # メッセージを書きます
            m = "おはようございます" + message.author.name + "さん!"
            # メッセージが送られてきたチャンネルへメッセージを送ります
            await client.send_message(message.channel, m)

client.run("token")

実行してみよう

保存したファイルを実行してみましょう

$ python main.py
Logged in as
ユーザー名
ID
------

これが出力されれば正常に実行できていますです。

最後にDiscordに行ってBotのいるグループで「おはよう」と打つと返事が帰ってくるはずです!

最後に

反応する言葉や返事は簡単に変えられますが他の処理をいれようとした時はasyncになっていることを考慮してやってみてください。

参考

discord.pyの公式Github