24 小时托管 Discord 机器人(discord.js、discord.py)
以下是在 Ubuntu 服务器上运行机器人,使其在您关闭本地电脑后也能持续运行的方法。假设机器人代码已经完成,并且在本地电脑上运行正常。
1. 将机器人代码迁移到服务器
参考上传和下载文件将机器人文件夹传到服务器;如果已上传到 GitHub,也可以直接在服务器上拉取。
git clone https://github.com/your-id/your-bot.git
cd your-bot
🔒 绝对不要将机器人令牌直接写在代码中或上传到 GitHub。令牌一旦泄露,任何人都可以操控您的机器人。建议将其单独放在服务器的
.env文件中。
Node.js 机器人(discord.js)
安装 Node.js
Ubuntu 默认软件源中的 Node.js 版本较旧,最新的 discord.js 可能无法运行。请通过官方发行版安装。
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
安装依赖包后用 pm2 运行
pm2 会在机器人停止时自动将其重新启动,服务器重启后也会重新运行机器人。
npm install
sudo npm install -g pm2
pm2 start index.js --name my-bot # 请按启动文件的名称修改
pm2 save
pm2 startup # 将输出的命令再复制执行一次
常用命令:
pm2 logs my-bot # 查看实时日志(退出:Ctrl + C)
pm2 restart my-bot # 修改代码后重启
pm2 status # 查看运行状态
Python 机器人(discord.py)
创建虚拟环境并安装依赖包
sudo apt install -y python3-venv
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
用 systemd 持续运行
创建服务文件。
sudo nano /etc/systemd/system/my-bot.service
将 WorkingDirectory 和 ExecStart 中的路径改为实际的机器人文件夹位置(用 pwd 命令确认),将 User 改为您的账户名。
[Unit]
Description=My Discord Bot
After=network-online.target
[Service]
User=username
WorkingDirectory=/home/username/your-bot
ExecStart=/home/username/your-bot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now my-bot
sudo systemctl status my-bot # 显示 active (running) 即表示成功
journalctl -u my-bot -f # 查看实时日志
机器人没有在运行
- 请先查看日志(
pm2 logs或journalctl -u my-bot)。令牌错误、缺少依赖包是最常见的原因。 - 机器人不是从外部接收连接的服务,因此无需另外开放防火墙端口。
- 如果服务器本身没有响应,请查看无法连接服务器时。