意外と簡単だったからDiscordのBOTを作ってみるよ
どうも、久しぶりの技術系の記事です。またしても、学生としてやるべきことを放置してこちらの記事を書いていきます。というのも、最近なにかとDiscordを使う機会が増えたのですが、とあるサーバーでみたBOTの働きが面白くて、作りたくなってしまいました。
というわけで、今回はDiscordのBOT作りの第一歩として、簡単な返答BOTを作っていこうと思います。今回はPythonの3.6.x系で開発していきますが、Pythonの環境構築は本記事では触れないので、こちらの記事(Ubuntu, MacOS)なんかを参考に構築しておいてください。
OS : Ubuntu 16.04 LTS, MacOS
Python : 3.6.0
1. 環境構築
さて、まずは環境構築です。今回はDiscordのAPIをPythonから動作させたいので、”Discord.py“というものを使っていきます。基本的には公式のGitHubに書かれている導入方法を参考にすれば簡単にインストールできると思います。
というわけで、以下のコマンドでインストールします。
1 |
$ python3 -m pip install -U discord.py |
基本的には上記のコマンドで十分ですが、もし開発版が欲しかったりコンパイルがしたい場合は、適宜GitHubのページを確認して適切なコマンドを選択してください。
2. BOTの登録
次に、DiscordのディベロッパーページからBOTを実行するときに使用するトークンを取得してきます。というわけでまずは以下のページにアクセスしてください。
画面が表示されたら、”New App”を選択して新しいアプリを登録していきます。するとアプリ情報の入力フォームが出てくるので、対応する情報を入力していきます。ちなみに、後からいくらでも変更できるので、動作テストするだけなら本気で考えなくてもいいと思います。
“APP NAME” : アプリ名 テケトーで大丈夫
“REDIRECT URI(S)” : 操作不要
“APP DESCRIPTION” : 説明、テケトーで大丈夫
“APP ICON” : アイコン 操作不要
アプリの登録が完了したら、次にアプリにBOT機能を持たせるための操作をやっていきます。アプリの登録が完了したあとに出てくるページ(そのアプリのメインページ)の下の方に以下の画像のようなところがあると思います。
この中の右側にある”Create a Bot User”を押します。すると”ADD A BOT TO THIS APP?”というモーダルがでてくるので”Yes, do it!”を押して完了です。すると先ほどの画像のような箇所がBOTの設定を行える感じになります。今回は特に操作する必要はないので、そのままにしておきます。
ただ、BOTの実行時に使用するトークンを取得しなくてはいけません。トークンはいま操作していた箇所にある”Token:click to reveal”という小さい文字をクリックすることで見ることができます。ここで表示される文字列は他の人には秘密ですが、後で使うのでメモしておいてください。
3. サーバーに登録
次に、Discordに作っておいた自分のサーバーにBOTを参加させます。サーバーの作成についてはこちらなんかを参考にしてみてください。
サーバーにBOTを参加させるには、アプリのメインページにある”Generate OAuth2 URL”を押します。すると以下の画像のような画面が表示されます。
表示されたら”SCOPES”で”BOT”が選択されていることと”Bot Permissions”で適切なパーミッションが設定されていることを確認してください。今回はコメントに返答するだけなので特に設定する必要はないみたいです。もし設定が必要になったら公式のリファレンスを確認しつつ設定してください。めんどくさかったら”Administrator(管理者)”とかでもいいのでは…外部に公開しなければ。
確認が終わったら、さきほどの画像でいうところの真ん中にあるURLをコピーして、そのアドレスにアクセスします。するとBOTを追加するサーバーが問われるので、参加させたいサーバーを選択しておしまいです。これだけでサーバにBOTが参加しました。
4. プログラムを書く
さて、ここまで来たらあとはプログラムを書いて実行するだけです。プログラムのサンプルはこれまた公式GitHubにあるので、ただ動かしたい人はそちらでも大丈夫です。本記事では単純にコメントに返答するBOTのコードをコメント増し増しで掲載しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#coding: utf-8 # 上記で取得したアプリのトークンを入力 BOT_TOKEN = "************************.******.***************************" # パッケージのインポートとインスタンス作成 import discord client = discord.Client() # ログイン&準備が完了したら一度だけ実行される @client.event async def on_ready(): # コンソールにBOTとしてログインした名前とUSER-IDを出力 print('Logged in as') print('BOT-NAME :', client.user.name) print('BOT-ID :', client.user.id) print('------') # メッセージを受信するごとに実行される @client.event async def on_message(message): # BOTとメッセージの送り主が同じ人なら処理しない if client.user == message.author: return # メッセージの頭が "!hello" なら実行する if message.content.startswith('!hello'): # メッセージが送られてきたチャンネルに "Hello World..." を返す await client.send_message(message.channel, 'Hello World...') # APP(BOT)を実行 client.run(BOT_TOKEN) |
これをお手元の端末で実行してみてください。
1 |
$ python main.py |
実行したままの状態で、BOTを参加させたチャンネルで”!hello”と入力すると、BOTも”Hello World…”と入力してくれます。
ちゃんとメッセージが帰ってきたら今回はおしまいです。
おわりに
さて、ここまで簡単にDiscordのBOT開発をまとめてきました。TwitterなどでBOTを作るには携帯番号の登録が必須だったりめんどくさいのですが、Discordさんは無料かつ個人情報不要で作れるのがいいですね。ぜひこれからもそんな感じで続いて欲しいです。
今回はただメッセージを送るだけでしたが、これからもっと凝ったことをやっていこうと思います。