🧭 あなたに最適なVPSを30秒で無料診断 診断する →

【2026年版】ゲーマー向けDiscordボット(BGM再生・戦績通知)をVPSで24時間稼働

読む前に30秒だけ。用途・予算を選ぶだけで、あなたに最適なVPSがわかります(無料・登録不要) 無料診断 →

【2026年版】ゲーマー向けDiscordボット(BGM再生・戦績通知)をVPSで24時間稼働

筆者の結論(読む前に確認してほしい)

やりたいと思ったなら、やってみればいい。これが最終回答じゃないから。

ただ、先に一つだけ言わせてほしい。「自宅PCで動かせばタダじゃん」という考えは今すぐ捨てたほうがいい。

PCを立ち上げっぱなしにするのは精神的に気になる。何かあったらリモートデスクトップで入らなきゃいけないから、全然手放しにならない。「月1,000円くらいなら払うよ」という人は、迷わずVPSに投げていい。1日あたり33円で「ボットのことを気にしなくていい」が買える。安い買い物だと思う。

GPUが必要かどうかについても最初に言っておく。DiscordボットにGPUは不要。BGM再生も戦績通知もAPI経由でやるだけなので、CPUとメモリで十分。GPUプランを推してくる記事はアフィリエイト報酬が高いプランに誘導したいだけのことが多いので、そのまま信じなくていい。

サービス選びは記事末尾の判断テーブルで確認してほしい。


なぜDiscordボットにVPSが必要なのか

正直に言うと、「自宅PCで動かす」と「VPSで動かす」の差は思っている以上に大きい。

運用場所稼働時間通信速度月額費用目安
自宅PCPC起動中のみ家庭回線依存電気代のみ
Heroku(無料)30分無操作でスリープ安定しない無料枠廃止済み
VPS24時間365日データセンター回線500〜2,000円/月

Herokuの無料枠はもうない。自宅PCは電気代だけで動くが「PCを落とせない」という精神的コストが地味にきつい。これを「タダ」とは呼べない。

月1,000円のVPSなら1日あたり約33円。この33円で「ボットのことを気にしなくていい」が買えると思えば、高くもなんともない。自分はこれに気づいてからVPSを迷わず選ぶようになった。


必要スペックの目安

はっきり書いておく。DiscordボットにGPUは不要。

BGM再生も戦績通知も、YouTubeのストリームURLを取得してFFmpegで流すだけ。GPUが活躍する場面が一切ない。CPUとメモリで十分動く。

GPUプランを推してくる記事を見かけたら「なんでGPUが必要なんだろう?」と一回立ち止まってほしい。大抵の場合、アフィリエイト報酬が高い上位プランに誘導したい理由がある。

ボット用途推奨メモリ推奨CPU月額目安
テキスト通知のみ512MB〜1GB1コア500円〜
BGM再生(〜3サーバー)2GB2コア1,000円〜
BGM+戦績+複数サーバー4GB4コア2,000円〜

自分の場合、友人3〜4人のDiscordサーバーでBGM+戦績通知を動かすなら2GB/2コアで余裕だった。最小構成から始めて、重くなったらプランを上げればいい。最初から大きいプランを取る必要はない。

XServer VPS for Game →


discord.py 音楽ボットの基本構成

インストール

# Python 3.11 以上を確認
python3 --version

# discord.py と音声依存ライブラリをインストール
pip install "discord.py[voice]" yt-dlp

# FFmpeg(音声変換に必須)
sudo apt install ffmpeg -y

yt-dlpとFFmpegの組み合わせが現状一番安定している。以前はyoutube-dlが主流だったが、更新頻度の関係でyt-dlpに移行したほうが無難。これは今から始めるなら最初からyt-dlpで迷わなくていい。

BGM再生ボットのコアコード

import discord
from discord.ext import commands
import yt_dlp

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)

YTDL_OPTIONS = {
    "format": "bestaudio/best",
    "noplaylist": True,
    "quiet": True,
}
FFMPEG_OPTIONS = {
    "before_options": "-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5",
    "options": "-vn",
}

@bot.command()
async def play(ctx, *, query: str):
    if not ctx.author.voice:
        return await ctx.send("ボイスチャンネルに参加してください。")
    vc = ctx.voice_client or await ctx.author.voice.channel.connect()
    with yt_dlp.YoutubeDL(YTDL_OPTIONS) as ydl:
        info = ydl.extract_info(f"ytsearch:{query}", download=False)["entries"][0]
    source = discord.FFmpegPCMAudio(info["url"], **FFMPEG_OPTIONS)
    vc.play(source)
    await ctx.send(f"再生中: **{info['title']}**")

@bot.command()
async def stop(ctx):
    if ctx.voice_client:
        await ctx.voice_client.disconnect()
        await ctx.send("停止しました。")

bot.run("YOUR_BOT_TOKEN")

-reconnect 1 のFFMPEGオプションはほぼ必須。これがないとストリームが途切れたとき無音のまま止まる。最初にここでハマる人が多い。先に入れておくと後で余計な時間を使わなくて済む。

戦績通知の実装(Valorant APIの例)

import aiohttp

@bot.command()
async def stats(ctx, username: str, tag: str):
    url = f"https://api.henrikdev.xyz/valorant/v1/account/{username}/{tag}"
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            data = await resp.json()
    rank = data["data"].get("currenttierpatched", "不明")
    await ctx.send(f"**{username}#{tag}** 現在のランク: `{rank}`")

HenrikDev APIは非公式だが、Valorantの戦績取得では事実上これ一択になっている。無料枠でも個人利用なら十分。レート制限に引っかかったときのエラーハンドリングは後から足せばいい。まず動くものを作るのが先。完璧に作ってから動かそうとすると永遠に動かない。


systemd で24時間稼働させる

ここが本題と言っても過言ではない。VPSに乗せる意味の大半はここにある。systemdで管理するかどうかで「VPSに入れた甲斐があったかどうか」がほぼ決まる。

サービスファイルの作成

sudo nano /etc/systemd/system/discord-bot.service
[Unit]
Description=Discord Game Bot
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/discord-bot
ExecStart=/usr/bin/python3 /home/ubuntu/discord-bot/bot.py
Restart=always
RestartSec=10
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target
# 有効化して起動
sudo systemctl daemon-reload
sudo systemctl enable discord-bot
sudo systemctl start discord-bot

# 状態確認
sudo systemctl status discord-bot

Restart=alwaysRestartSec=10 の組み合わせが重要。クラッシュしても10秒後に自動で復活するので、夜中に落ちても朝起きたら動いてる状態になる。自宅PCでは絶対に実現できない安心感がある。これを設定してから「ボットが落ちてた」という報告をサーバーで受けることがなくなった。

ログの確認

# リアルタイムログ
journalctl -u discord-bot -f

# 直近50行
journalctl -u discord-bot -n 50 --no-pager

最初のうちはリアルタイムログを流しながら動作確認するのがいちばん早い。エラーメッセージをそのままコピーして調べれば大抵解決する。「なんか動かない」で止まる人の多くは、ここのログを見ていないだけだったりする。


VPS選びのポイント(ゲーム用途)

使ってみた感想としては、Discordボット単体ならどのVPSでも動く。差が出るのはゲームサーバーと同居させるときだけ。

自分の判断をここは断言する。

  • ボット単体: 正直どこでもいい。一番安いプランで始めればOK
  • ゲームサーバーと同居: ゲーム特化プランのあるサービスを選ぶ。帯域とレイテンシで差が出る

ConoHa for GAME →

サービス最小プランゲーム特化特徴
XServer VPS for Game2GB/月1,000円〜ゲームテンプレート多数
ConoHa for GAME2GB/月1,000円〜時間課金・即時停止可

両方とも月1,000円前後のスタートラインは同じ。ここは用途と性格で分けていい。

ConoHaは時間課金なので「週末だけ使う」「試しに動かしてみたい」人向け。使った時間だけ払えばいい。XServerは固定料金なので「毎月いくらか計算したくない、とにかく決めたい」人向け。毎月同じ金額が引き落とされる安心感は、地味にストレスを減らしてくれる。

どちらが正解かではなく、「計算するのが面倒な人はXServer、まず試してみたい人はConoHa」と考えると選びやすい。


A. 第三者がボットを乗っ取り、サーバーのメッセージ送信やメンバー管理など広範な操作が可能になります。トークンは必ず環境変数(.envファイル)に保存し、GitHubなどに公開しないようにしてください。
A. 友人間のプライベートサーバーでの非営利利用であれば現実的なリスクは低いですが、著作権管理された楽曲の再生は規約上グレーゾーンです。著作権フリー音楽サービス(FreeMusicArchive等)をソースにすると安心です。
A. systemdの `Restart=always` 設定により、プロセスが終了すると10秒後に自動再起動します。メモリ不足による強制終了でも復旧します。

まとめ:あなたの使い方で選ぶ

使い方判断選ぶプラン
友人4〜5人のサーバーでBGMだけ流したいまず最小構成で試す1GB〜2GB、月500〜1,000円
戦績通知も入れて複数サーバーで使いたい2GBあれば余裕2GB/2コア、月1,000円前後
ゲームサーバーと同居させたいゲーム特化VPS一択XServer/ConoHa for GAME
とにかく固定料金で管理したいXServer VPS for Game月額固定プラン
試用期間中に動作確認したいConoHaの時間課金が柔軟使った分だけ課金
自宅PCで動かそうとしてるやめとけVPSに移行を

技術的にまとめると:

  • discord.py + yt-dlp + FFmpeg でBGM再生ボットは動く
  • 戦績APIを組み合わせればゲームチームの実用ツールになる
  • systemd の Restart=always で夜中に落ちても自動復旧する
  • GPUは不要。推してくる記事は疑っていい
  • ゲームサーバーと同居させるなら2GB以上を確保する

やってみたいと思ったなら一度やってみればいい。最初からうまくいかなくても、プランを変えることも、サービスを乗り換えることも、全部後からできる。今の選択が一生続くわけじゃない。悩んでいる暇があったら、手を動かしたほうが早い。

XServer VPS for Game →

ConoHa for GAME →

あわせて読みたい

編集部監修

本サイトはAIを活用して記事を作成し、編集部(人間)が内容を確認・監修しています。執筆・監修: けせら(AI・VPS領域のテクニカルライター / 編集長)。料金・仕様は公開情報をもとに随時更新/データ更新日: 2026-06-18。

あなたに合うVPSは?30秒で無料診断 診断する →