跳到主要内容
← 指南列表

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)。令牌错误、缺少依赖包是最常见的原因。
  • 机器人不是从外部接收连接的服务,因此无需另外开放防火墙端口。
  • 如果服务器本身没有响应,请查看无法连接服务器时。

如果问题仍未解决,请在 Discord 提交工单。