追記 2019/1/23 Discordのページの仕様が変わっていたため内容を少し変更しました。
追記 2019/5/11 discord.py
の使い方が多少変更されていたため、本記事に書かれているコードを新しいものに修正しました。@1ntegrale9さん報告ありがとうございます。
今回作るもの
Discordで 「おはよう」 と入力すると 「おはようございます、"ユーザー名"さん!」 と返事をする簡単なBotを作ります。後から反応する言葉を変えたりできます。
ほとんど公式Githubにあるクイックスタートと同じ内容です。
Discordとは
最近はやってるゲーマー用のチャットアプリです。Slackと少し似ていてボットが開発しやすい環境となっています。
あらかじめやっておくこと
- Python3の環境を作る
- Pythonを書くテキストエディタを入れていく
discord.pyのダウンロード
discord.pyをpipを使ってインストールします。
python3 -m pip install -U discord.py
Bot用のトークンを手に入れる
DiscordのDeveloperのサイトに行って新しいBotを登録します
まずApplicationsでCreate an Applicationをクリックします。
次にNAMEに自分のボットの名前を書き、Createをクリックします。
左側にあるBotの欄に行きAdd BotをクリックしてYes, do it!
また同じページのTOKENの欄に行ってClick to Reveal Tokenをクリックし、Token確認します (これを後で使います)
最後に左側にあるOAuth2の欄に行きます。
OAuth2 URL GRNERATORの下にたくさんのチェックボックスがあると思うので、 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 message.channel.send(m)
最後にBotをスタートします
# token にDiscordのデベロッパサイトで取得したトークンを入れてください
client.run("token")
全体のコードをまとめて書くと
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 message.channel.send(m)
client.run("token")
実行してみよう
保存したファイルを実行してみましょう
$ python main.py
Logged in as
ユーザー名
ID
------
これが出力されれば正常に実行できていますです。
最後にDiscordに行ってBotのいるグループで「おはよう」と打つと返事が帰ってくるはずです!
最後に
反応する言葉や返事は簡単に変えられますが他の処理をいれようとした時はasync
になっていることを考慮してやってみてください。