2024年10月13日 備忘録

Discord Botの作成③ botを常時起動させる【ConoHa WING】

Discord Botの作成③ botを常時起動させる【ConoHa WING】

ディスコのbot作成の覚え書き3本目。今回はbotを常時起動させるために、ConoHa WINGのジョブスケジューラーを利用する。

第1回目の記事はこちら

第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を切り替えることで、コマンドの実行を操作する。