You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过UpTimeRobot检测Python开发的Discord机器人是否正常运行?

UpTimeRobot 检测 Discord 机器人在线状态实现方案

最优方案选择

四种检测方式里HTTP(s) 检测是最简单的实现方案,其余三种方案的局限性如下:

  • Ping 检测:仅能验证部署机器人的服务器网络连通性,无法判断机器人进程是否正常运行、是否成功连接Discord服务
  • Port 检测:Discord机器人为主动连接官方网关的客户端模式,默认不会监听公网端口,自行开放端口仅能验证端口可用性,无法直接对应机器人在线状态,同时还会增加服务器安全风险
  • Keyword 检测:本质为HTTP(s)检测的延伸功能,需要额外配置关键词匹配规则,实现成本高于基础HTTP(s)检测

具体操作步骤

第一步:给机器人新增健康检查接口

在你的机器人代码中加入一个轻量HTTP服务,仅当机器人成功连接Discord网关、处于正常运行状态时返回200状态码即可,以常用框架示例:

discord.js 示例代码

const express = require('express');
const app = express();
const CHECK_PORT = 8080; // 可自行替换为未被占用的端口

client.on('ready', () => {
  // 机器人就绪后启动健康检查接口
  app.get('/health', (req, res) => {
    client.isReady() ? res.status(200).send('OK') : res.status(503).send('ERROR');
  });
  app.listen(CHECK_PORT, () => console.log(`健康检查接口已启动,端口:${CHECK_PORT}`));
});

discord.py 示例代码

from flask import Flask
from discord.ext import commands
import threading

app = Flask(__name__)
bot = commands.Bot(command_prefix='!')
CHECK_PORT = 8080

@app.route('/health')
def health_check():
    return 'OK', 200 if bot.is_ready() else 'ERROR', 503

def run_http_server():
    app.run(port=CHECK_PORT, host='0.0.0.0')

@bot.event
async def on_ready():
    # 启动HTTP服务线程
    threading.Thread(target=run_http_server, daemon=True).start()

配置完成后放开服务器对应端口的入站防火墙规则,确保公网可以访问该接口。

第二步:配置UpTimeRobot监控规则

  • 进入UpTimeRobot后台新建监控项,监控类型选择HTTP(s)
  • 监控地址填写部署机器人的服务器公网地址+接口路径,格式为http://你的服务器公网IP:8080/health
  • 根据需求选择检测间隔,默认5分钟即可
  • 告警判定规则保持默认,接口返回非200状态码时即判定为机器人离线,同步更新状态页数据即可

内容的提问来源于stack exchange,提问作者Razzer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:48:05