WindowsサーバーでDiscordボットを動かす
Windowsサーバーにリモートデスクトップで接続して、Discordボットを24時間実行する方法です。ボットのコードは、すでに自分のPCで問題なく動くことを前提とします。Linuxサーバーの場合は、Discordボットを24時間ホスティングする (discord.js・discord.py)を参考にしてください。
1. ボットのファイルを移す
ボットのフォルダーを圧縮してリモートデスクトップでコピーするか(ファイルのアップロードとダウンロード)、GitHubに上げてあるならサーバーで取得します。ここではC:\mybotに置くものとします。
🔒 ボットのトークンはコードに直接書かず、
.envファイルに別途置いてください。トークンが漏えいすると、誰でも自分のボットを操作できてしまいます。
Node.jsのボット (discord.js)
Node.jsのインストール
サーバー内のブラウザーでnodejs.orgにアクセスし、LTS版のWindows用.msiをダウンロードしてインストールします。PowerShellを新しく開いて確認します。
node -v
パッケージのインストールと実行
cd C:\mybot
npm install
node index.js
ボットがDiscordでオンラインになれば成功です。(index.jsは自分のボットの起動ファイル名に置き換えます)
Pythonのボット (discord.py)
Pythonのインストール
python.orgからWindows用のインストーラーをダウンロードして実行します。最初の画面で 「Add python.exe to PATH」に必ずチェックを入れてからインストールします。
仮想環境を作って実行
cd C:\mybot
py -m venv venv
.\venv\Scripts\pip install -r requirements.txt
.\venv\Scripts\python bot.py
終了したら再び起動、再起動後に自動実行
ボットを直接実行しておくだけだと、エラーで終了したときに再び起動しません。C:\mybot\start.batを作成して、終了したら自動で再実行されるようにします。
@echo off
cd /d C:\mybot
:loop
node index.js
echo Bot stopped. Restarting in 10 seconds...
timeout /t 10
goto loop
Pythonのボットなら、node index.jsの行をvenv\Scripts\python bot.pyに置き換えます。
サーバーが再起動してもボットが自動で起動するようにするには、このstart.batをタスク スケジューラに登録します。方法は、Windowsサーバーでプログラムを自動実行するのとおりに進めれば大丈夫です。
知っておくこと
- リモートデスクトップのウィンドウは、Xボタンで閉じてください。 サーバー内でサインアウトすると、直接実行したボットが終了します。
- ボットは外部から接続を受け付けるプログラムではないため、ファイアウォールのポートを開ける必要はありません。
- ボットが終了する場合は、コンソールウィンドウの最後のエラーメッセージを確認してください。トークンのエラーやパッケージの不足が、最もよくある原因です。
- WindowsはOS自体がメモリを多く使います。ボットだけを動かすなら、Linuxサーバーのほうが安くて軽いです。OS選択ガイド