結論:あなたのBotが「止まる」「反応が遅い」のは、コードのせいではなく環境のせいです。

月額数百円で「本物のサーバー(VPS)」を借りるだけで、これらの悩みは一瞬で消え去ります。この記事では、Linuxの「黒い画面」が怖い初心者の方でも、コピペだけで「24時間動き続けるBot」を構築できる手順を完全解説します。


序章:なぜ「無料枠の工夫」を卒業すべきなのか?

Bot開発者が必ず通る道、それが「無料ホスティングサービスの限界」です。

  • GAS: 最大実行時間が6分。音楽Botや複雑な会話は作れません。
  • Replit: すぐにスリープ(停止)してしまい、起こすための裏技も規制されつつあります。
  • 自宅PC: 24時間つけっぱなしは電気代がかさみ、PCの寿命も縮めます。

ConoHa VPS は、GoogleやAWSのような「従量課金(使った分だけ請求)」ではなく、**「月額定額制」**です。設定ミスで数万円請求される「クラウド破産」の心配がなく、国内最速級の回線でBotが爆速で反応します。


Step 1: まずは手元のPCでBotを作る

いきなりサーバーにコードを書くのは失敗の元です。まずは手元のPCで「確実に動くBot」を用意しましょう。

※2025年の標準である**「スラッシュコマンド (/hello)」**に対応した最新コードを用意しました。

必要なもの

  • Bot Token: Discord Developer Portalから取得してください。
  • Botのコード: 以下のコードをコピーし、bot.py という名前で保存してください。

Python

# -----------------------------------------------------------
# 2025年版 モダンDiscord Bot テンプレート
# 特徴: スラッシュコマンド対応, 起動確認ログ, エラーハンドリング
# -----------------------------------------------------------
import discord
from discord import app_commands
from discord.ext import commands
import os

# --- 設定エリア ---
# ※ここにBot Tokenを貼り付けてください
TOKEN = "YOUR_BOT_TOKEN_HERE"

# Botの権限設定(Intents)
# Developer Portalで "Message Content Intent" をONにするのを忘れずに!
intents = discord.Intents.default()
intents.message_content = True 

# Botインスタンスの作成
class MyBot(commands.Bot):
    def __init__(self):
        super().__init__(command_prefix="!", intents=intents)

    # 起動時の処理(コマンドの同期など)
    async def setup_hook(self):
        await self.tree.sync() 
        print("スラッシュコマンドの同期が完了しました。")

bot = MyBot()

# --- イベント: 起動完了 ---
@bot.event
async def on_ready():
    print(f"ログイン完了: {bot.user} (ID: {bot.user.id})")
    print("--------------------------------------------------")
    # Botのステータスを「ConoHa VPSで稼働中」にする
    await bot.change_presence(activity=discord.Game(name="ConoHa VPSで24時間稼働中"))

# --- 機能1: 挨拶コマンド (スラッシュコマンド) ---
@bot.tree.command(name="hello", description="Botが元気に挨拶します")
async def hello(interaction: discord.Interaction):
    # ephemeral=True にすると、実行した人にだけ見えるメッセージになる
    await interaction.response.send_message(f"こんにちは、{interaction.user.mention} さん!ConoHaから応答しています!", ephemeral=True)

# --- 機能2: Pingコマンド (応答速度確認) ---
@bot.tree.command(name="ping", description="サーバーの応答速度を表示します")
async def ping(interaction: discord.Interaction):
    latency = round(bot.latency * 1000)
    await interaction.response.send_message(f"Pong! 🏓 応答速度: {latency}ms")

# --- 実行 ---
if __name__ == "__main__":
    try:
        bot.run(TOKEN)
    except Exception as e:
        print(f"エラーが発生しました: {e}")

手元のPCで python bot.py を実行し、Discord上で /hello と打って返信が来れば準備完了です。


Step 2: ConoHa VPS の契約と初期設定

ConoHa VPSの申し込み画面で迷わないための「正解」設定です。

  1. プラン: 「512MB」でも動きますが、「1GBプラン」 が推奨です。数百円の差でメモリ不足による停止を防げます。
  2. OS: 「Ubuntu 24.04 LTS」 を選んでください。ネット上の情報が最も多いOSです。
  3. rootパスワード: サーバーの「鍵」です。絶対に忘れないようにメモしてください。

契約が完了すると、「IPアドレス(例: 133.xxx.xxx.xxx)」が表示されます。これもメモしましょう。


Step 3: 「黒い画面」への接続 (SSH)

いよいよサーバーに入ります。Windowsなら「Tera Term」、Macなら「ターミナル」を使います。

  1. ソフトを起動し、ホスト(Host)に IPアドレス を入力。
  2. サービス(Service)は「SSH」を選択してOK。
  3. ユーザー名: root
  4. パスワード: Step 2で決めたパスワードを入力。

画面に文字がずらっと表示され、root@...:~# という表示が出ればログイン成功です!ここがあなた専用の「サーバーの司令室」です。


Step 4: サーバーの環境構築(コピペ大会)

ここからは、Linuxに「Pythonが動く環境」を作ります。

以下のコマンドを1行ずつコピーし、黒い画面で右クリック(貼り付け)してEnterを押していくだけです。

Bash

# 1. システムを最新の状態に更新(パスワードを聞かれたら入力)
sudo apt update && sudo apt upgrade -y

# 2. Python3 と仮想環境作成ツール(venv)をインストール
sudo apt install -y python3 python3-pip python3-venv

# 3. Botを置くためのフォルダを作成して移動
mkdir -p ~/my_discord_bot
cd ~/my_discord_bot

# 4. Python仮想環境を作成(システムのPythonを汚さないための隔離エリア)
python3 -m venv venv

# 5. 仮想環境を有効化(プロンプトに (venv) と表示されます)
source venv/bin/activate

# 6. Discord.py ライブラリのインストール
# ※必ず左端に (venv) が出ている状態で実行!
pip install discord.py

Step 5: ファイルのアップロード

Botのコード (bot.py) をサーバーに送ります。

初心者はコマンドではなく、ドラッグ&ドロップで操作できる 「WinSCP」 (Windows) や 「Cyberduck」 (Mac) を使いましょう。

  1. WinSCPを起動し、IPアドレス、ユーザー名(root)、パスワードを入力して接続。
  2. 右側の画面(サーバー側)で /root/my_discord_bot フォルダを開きます。
  3. 左側の画面(自分のPC)から bot.py を、右側へドラッグ&ドロップします。

これでサーバーの中にBotが入りました!

黒い画面に戻って python bot.py と打ってみてください。Botが起動するはずです。

(確認したら Ctrl + C で一度停止してください。SSH画面を閉じるとBotも止まってしまうためです。)


Step 6: 永続化設定(切断しても止まらない魔法)

PCの電源を切ってもBotが動き続けるように、Systemd(システムディー) という機能を使います。

難しそうに見えますが、設定ファイルを1つ置くだけです。

1. 設定ファイルの作成

PCのメモ帳で以下の内容をコピーし、discordbot.service という名前で保存してください。

Ini, TOML

[Unit]
Description=Discord Bot Service
After=network.target

[Service]
# Botを実行するユーザー
User=root
# Botのフォルダ場所
WorkingDirectory=/root/my_discord_bot
# 実行コマンド【重要:仮想環境のPythonを指定】
ExecStart=/root/my_discord_bot/venv/bin/python /root/my_discord_bot/bot.py
# 自動再起動設定
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

2. アップロードと登録

  1. WinSCPを使って、この discordbot.service ファイルを /etc/systemd/system/ フォルダへアップロードします。
    • ※直接入れられない場合は、一度 /root/ に入れてから黒い画面で mv /root/discordbot.service /etc/systemd/system/ と打って移動させてください。
  2. 黒い画面で以下のコマンドを実行し、Botを「自動運転モード」にします。

Bash

# 設定ファイルの読み込み
sudo systemctl daemon-reload

# Botを起動
sudo systemctl start discordbot

# サーバー再起動時も自動で起きるように設定
sudo systemctl enable discordbot

最後に sudo systemctl status discordbot と打って、緑色の文字で active (running) と表示されていれば大成功です!


運用と発展:ログ確認と更新

おめでとうございます!これであなたのBotはConoHa VPSという「城」を手に入れ、24時間365日眠らずに働き続けます。

  • ログが見たい時: journalctl -u discordbot -f
  • Botを更新したい時: bot.py を上書きアップロードしてから sudo systemctl restart discordbot

これで「PCの電源を切ってもBotが動く感動」を味わってください!


よくある質問 (FAQ)

VPSを初めて使う方が疑問に思うポイントをまとめました。

Q1. サーバーの時間が日本時間とズレています。

A. VPSの初期設定は世界標準時(UTC)の場合があります。黒い画面で以下のコマンドを打つと日本時間(JST)になります。

Bash

sudo timedatectl set-timezone Asia/Tokyo

Q2. 1つのサーバーで複数のBotを動かせますか?

A. はい、可能です。

手順は同じですが、フォルダ名(例: bot2)とSystemd設定ファイル名(例: discordbot2.service)を変えて作成してください。1GBプランであれば、軽いBotなら3〜5個程度は同時に動かせます。

Q3. ModuleNotFoundError: No module named ‘discord’ というエラーが出ます。

A. Systemd設定ファイルのパスが間違っている可能性があります。

Systemdの ExecStart の部分で、/usr/bin/python ではなく、仮想環境の中にある /root/my_discord_bot/venv/bin/python を指定しているか再確認してください。仮想環境の外のPythonにはライブラリが入っていないため、このエラーが出ます。

Q4. クレジットカードがなくても契約できますか?

A. はい、可能です。

ConoHa VPSは「ConoHaチャージ」を利用することで、コンビニ払い、Amazon Pay、銀行決済などが利用できます。

Q5. ポート開放(Firewall設定)は必要ですか?

A. 基本的なBotなら不要です。

Discord Botはサーバーから外へ情報を読みに行く(Outbound)通信がメインなので、Webサイトを公開する場合のような「ポート開放」の作業は基本的に必要ありません。