はじめに
pythonの勉強がてら、discordでしょうもないBOTを作成してGCPのクラウドサーバーに載せてみたいと思います。
Discord側の設定と、GCPの登録方法がメインです。Discord側の設定は以下をめちゃくちゃ参考にさせていただきました。
環境
- Windows10
- Python3.6.6
Discord側の設定
まずはテスト用サーバーを作る。左ペインのサーバー追加ボタンを押して、
今度は、ブラウザでDiscordのBotを登録しましょう。
Discordにログインし、マイアプリのページを開きます。
(既に1個アプリが存在しますが気にしないでください)
「新しいアプリ」ボタンを押して、アプリの名前やアイコン、説明を入力して「作成」をクリックすると、こんな画面になります。
「Botユーザーを作成」ボタンを押してBotユーザーを作成してください。
次はOAuthの設定。「Generating OAuth2 URL」を押して、
OAuth2 URL右の「COPY」を押してクリップボードにコピー。
コピーしたURLをブラウザで開くと、以下のような画面になります。
サーバーを選んで認証し、ロボットチェックを超えれば…
最初に作成したDiscordのサーバーに、BOTが追加されています。
Pythonの設定
まずはPython3の環境を作ります。
Windowsなので、Pythonは普通にインストーラーをダウンロードしてインストールしました。
- 2018/07/01現在、一部のライブラリがPython3.7.0に対応しておらず実行できません。3.6.6以下を使用してください。
discordライブラリをインストール。
> pip install discord
あとはBOTのプログラムを書く。
今回は誰かが「そうなの?」とか聞くと「ソーナノ」を返してくれるようなBOTを作成します。GitHubで公開してみたのでよければどうぞ。
以下のように実行すると、先ほどのサーバーに追加されたBOTがチャンネルに参加します。
$ py main.py
同じチャンネルに参加している人が「ソーナノ」とか言えばBOTが反応してくれます。
GoogleComputeEngineの設定
すみません、GCPに登録してプロジェクト作るところまで事前にやっちゃいました。。。
仮想マシンを作ってdebianを入れて、BOTをデプロイするところをやりましょう。
リージョンを北米、マシンタイプをmicroにします。これで1か月の料金が無料になるはず。
まずはSSHでつなげるようにしたいですね。以下を参考にさせていただきました。
GCPに共通鍵を追加する手順まとめ
SSH公開鍵の設定が終わればTeraTerm等で接続できます。私はいつもWinSCP+PuTTYを使用してログイン情報を保存しています。
Linux設定
次はいよいよ、作成したLinuxにPythonとかをインストールし、Botをデプロイしてみます。
$ python3 --version
Python 3.5.3
Pythonは最初から入ってるみたいですね。pipはないみたいなのでまずはpipをインストールし、その後実行に必要なdiscordモジュールをpipでインストールします。
$ sudo apt install python3-pip
$ sudo python3 -m pip install discord
sshでフォルダに移動して実行。
$ pwd
/home/amama/WobbuffetBot
$ nohup python3 main.py &
これでBotが起動しました。あとはログアウトしても大丈夫です。
最後に
DiscordBotを常時立ち上げておける環境がないか探していたのですが、GCPが無事に使えそうでよかったです。次はGCP上でコンテナ動かすとかやってみたいですね。