Discord Botの作成③ botを常時起動させる【ConoHa WING】
ディスコのbot作成の覚え書き3本目。今回はbotを常時起動させるために、ConoHa WINGのジョブスケジューラーを利用する。
第1回目の記事はこちら
Discord Botの作成① 開発者ポータルでの設定とサーバーへの導入
第2回目の記事はこちら
botをオンラインにさせ続ける
botのソースコードを起動させても、ある程度時間が経過したところでDiscordのサーバー上での表示はオフラインに変更される。いちいち手動でbotを起こし続けるということもできはするが、現実的な手法とは言い難い。
そこで、ConoHa WINGのサーバーを利用することでbotを常時起動(オンライン)させる。手段についてざっくり言うと、サーバーの機能でbotを一定時間毎に起こし続けてもらう。
サーバーにファイルをアップする
まずは、前回ソースコードを記述した『拡張子が.pyのファイル』を、ConoHa WINGサーバーの任意の場所にアップロードする。
今回は、『public_html』や『logs』と同じ階層に『discord_file』というディレクトリを作成し、そこにファイルをアップしたものとする。
例:
『omoti.py』を『discord_file』ディレクトリにアップした場合、ファイルの階層は以下になる。
/discord_file/omoti.py
ConoHaサーバーにアップした後のファイルを手動で実行する場合
サーバーにアップした後のファイルも、設定を行うことでローカルのターミナル等から操作できる。
詳しくは以下を参照。
ジョブスケジューラーの操作
次に、ConoHa WINGのコントロールパネルを開く。
画面左の『サーバー管理』から『ジョブスケジューラー』へ移動。
画面右上の『+ ジョブスケジュール』を選択する。
詳細を設定できる画面が追加されるので、以下を設定する。
○ 処理日時
botを起動するタイミングを入力する。
『毎時』、『毎日』...など、いくらか種類があるが、botを常時起動し続けることが目的である場合は『毎時』を選択し、1時間毎にbotを起こし続けるのが無難。
『実行時間 分』の箇所に、任意のタイミング(時間)を入力する。
○ コマンド
ジョブスケジューラーに一定時間毎に実行してもらうコマンドを入力する。
ここではbotを起動するコマンドを入力するが、.pyファイルはローカルではなくConoHaサーバー上に存在するため、ConoHaサーバーにあるPythonで処理を行なってもらう必要がある。
ConoHa WINGにあるPythonのファイルパスは以下。
/opt/alt/python36/bin/python3.6
次いで、.pyファイルの位置を教える。
.pyファイルを先述したようにアップロードした場合、.pyファイルのパスは以下。
/home/ユーザー名/discord_file/omoti.py
『ユーザー名』の確認方法は以下。
- ConoHaのコントロールパネルより、画面左側にある『サイト管理』から『ファイルマネージャー』を選択する。
- 新しく表示されたファイルマネージャーの画面の左上の『よく使う項目』の直下の文字列がユーザー名を内包している。
- 『_(アンダーバー)』と『@localhost』の間の英数字が『ユーザー名』。
- また、『ユーザー名』は『サイト管理』の『SSH』で作成した鍵の詳細を見る箇所でも確認ができる。
以上を組み合わせ、最終的に入力するコマンドは次のようになる。
/opt/alt/python36/bin/python3.6 /home/ユーザー名/discord_file/omoti.py
コマンドには必ず"絶対パス"を使用する
ジョブスケジューラーが利用している、『一定時間毎に指定したプログラムを実行する機能』をcronと呼ぶ。
cronの設定を行う場合は、絶対パスでないと動作しない。
○ コメント
このジョブスケジュールがどういうものか、自分で識別できるようなメモを残すこと。
日本語は文字化けするのでお勧めしない。
必要な内容を入力したら『保存』を選択し、ジョブスケジュールの設定は完了となる。
コマンドの実行が始まり次第、botはDiscordサーバー上でオンラインし続ける。
また、作成されたジョブスケジュールを選択すると、詳細を確認できる。
以降は『利用設定』のON / OFFを切り替えることで、コマンドの実行を操作する。