🔁
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)
tmux
セッションを起動
✅ 1:tmux new -s discordbot
discordbot
という tmux セッションが作られ、その中でコマンドを実行できるようにしました
✅ ステップ 2:仮想環境を有効化にして、Botを起動
cd あなたのBotコードのディレクトリ
source .venv/bin/activate
python3 main.py
Botが起動し、「Bot名 でログインしました
」のようなログが表示されれば成功です。
tmux
を分離
✅ 3:キーボード操作で:
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
-
systemd
やscreen
が使えない軽量環境でも、tmux
なら SSH切断後もBotを動かし続けられます。 -
tmux
は開発中の確認や再起動にも便利です。 -
nohup
やdisown
も補助的には使えますが、ログ管理や再接続性の点でtmux
の方が扱いやすいです。
Discussion