Abstract
タイトルの通り。色々調べてやったけど古い情報も多くて大変だったので個人用にまとめる。
Bot自体の作成方法には触れず、あくまでもVMで動かすために必要な手順をまとめる。
そういう意味では、Botがローカル環境で動かせる人向けの記事。
そもそもBot作るところからやりたいよ >< な人はこの記事を参考にするとよい
1. GoogleCloudに登録し、VMの作成
ここに記載されている通り、リージョンとかをちゃんと選べばVMが無料で使える。DiscordのBotくらいならこれで十分なので、これを使う。
VMインスタンスの構成は
を参考に行うといい
2.botが有人で動くようになるところまで
有人で、というのは、VMのコンソール上で人がコマンドを打てばローカルと同じように動作するようになるまで、ということ。
まずは、お好きな方法でVMにSSH接続する。一番お手軽な方法は、インスタンスのダッシュボードから、「SSH>ブラウザウィンドウで開く」を選択すれば、何も考えずともコンソールを開ける。(以下はこの方法でコンソールを開いたとして話を進める。)
次に、初期設定としてVMにpipをインスコする。(Pythonは標準装備だったはず、もし入ってなかったり、バージョンを変えたい場合には適宜がんばれ)
sudo apt install python3-pip
そしたら、次にソースファイルをアップロードする。gitからcloneしてもいいし、コンテナ使ってもいい、原始的に行くなら、開いたコンソールウィンドウの左上にファイルアップロードのボタンがあるので、それを押して必要なファイルを一つずつアップロードすると良い。botの名前を付けたフォルダを作って、その中にひとまとめするといいだろう。
それができたら、ソースファイルを入れたディレクトリ内でPythonの仮想環境を作成して有効化して、必要なパッケージをインストールしていく。
筆者は仮想環境を使いたくなかったのでpip --break-system-packagesを使って無理やりインストールして動かそうとしたが、上手く動かなかったので素直に仮想環境を使っていくことにした。
仮想環境は一番シンプルなvenvで構わない。
仮想環境を食べ物だと思っている人はこちらの記事を参照
python3 -m venv [仮想環境の名前]
pip install discord
...
既にローカルでいい感じの環境ができているなら、ローカルの環境で「pip freeze」を実行して出てきたrequirements.txtをアップロードして、インストールしてもよい。
aiohttp==3.11.2
discord.py==2.4.0
httpcore==1.0.5
httpx==0.27.0
numpy==1.26.4
PyNaCl==1.5.0
youtube-dl==2021.12.17
yt-dlp==2025.1.15
...みたいな。
みたいな感じで必要なパッケージを羅列して
pip install -r requirements.txt
このコマンドで一括インストール。楽ちん。
インストールまで出来たら、そのままBotを以下で起動してみる
python [アップロードしたsource_file].py
ちゃんと起動出来たらOK。ダメそうだったらログを見ながら適宜修正する。
3.botが無人で動くようになるところまで。
無人で動かすのは実は結構簡単。以下を実行すればいいだけ。
nohup bash -c 'source [仮想環境名]/bin/activate && python [アップロードしたソース].py' > output.log 2>&1 &
仮想環境をアクティベートして、Botを作動させる、という動きをバックグラウンドでやり続けてくれる。
4.メンテ
「ps ax」をコンソールで実行すると、その時点で稼働しているプロセスの一覧を見ることができる。
その中に、 「python [source].py」みたいなのがあればちゃんと動いているねーと確認することができる。
pythonコードのログを確認したければ、「tail -f output.log」を実行すれば確認可能。ここが全然動かずに止まっているとかだと、大体どこかでミスってる。
コードを変更したくなった場合には、以上で探したPIDを用いて、
「sudo kill [botの動いているPID]」を実行してやれば止まるので、ファイルを差し替えるなどして再実行すればよい。
結果
DiscordのBotをタダで常時稼働できる!