🔁

Botを作ろう(続)

に公開

前紹介した方法だとブラウザを閉じると接続が切れbotも切れてしまいます
今回のBot環境(Python + Discord Bot)に合わせた手順tmux を使って書き直しました。
前提条件として前のドキュメントを読んでいることです


systemd 非対応環境で Python Discord Bot を常時稼働させる方法

🔧 :テストとしてPythonファイルを入れておく

例:main.py として以下のようなコードをサーバー上にアップロードしておきます。

import discord
from discord.ext import commands

TOKEN = 'YOUR_BOT_TOKEN'
PREFIX = '!'

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix=PREFIX, intents=intents)

@bot.event
async def on_ready():
    print(f'{bot.user.name} でログインしました')

@bot.command()
async def ping(ctx):
    await ctx.send('pong!')

bot.run(TOKEN)

✅ 1:tmux セッションを起動

tmux new -s discordbot

discordbot という tmux セッションが作られ、その中でコマンドを実行できるようにしました


✅ ステップ 2:仮想環境を有効化にして、Botを起動

cd あなたのBotコードのディレクトリ
source .venv/bin/activate
python3 main.py

Botが起動し、「Bot名 でログインしました」のようなログが表示されれば成功です。


✅ 3:tmux を分離

キーボード操作で:

Ctrl + b を押した後、d

これで tmux セッションは閉じたように見えますが、裏でBotは動作し続けています。


✅ ステップ 4:SSH 切断しても問題なし

そのまま exit しても、Bot は24時間サーバー上で稼働し続けます。


✅ ステップ 5:再接続して様子を見るには

再度 SSH 接続してから、次のコマンドで tmux に再接続できます。

tmux attach -t discordbot

もし複数セッションがある場合は、次で確認:

tmux ls

🔄 その他のメンテナンスTips

セッションを完全に終了したいとき

tmux に戻った状態で Ctrl + C などでBotを停止し、exit でセッションを閉じます。

tmuxが入ってないとき

shironekoserver などではすでに入っていることが多いですが、ない場合は次のようにインストール:

sudo apt update
sudo apt install tmux -y

  • systemdscreen が使えない軽量環境でも、tmux なら SSH切断後もBotを動かし続けられます。
  • tmux は開発中の確認や再起動にも便利です。
  • nohupdisown も補助的には使えますが、ログ管理や再接続性の点で tmux の方が扱いやすいです。

Discussion