本文へスキップ
← ガイド一覧

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選択ガイド

解決しない問題がある場合は、Discordのチケットでお問い合わせください。