通过外部程序检查我的 discord 机器人是否 运行? - Python

Checking if my discord bot is running via external program? - Python

我想为我的 discord 机器人创建一个状态页面,让其他用户查看我的机器人当前是否处于 运行 或者是否处于离线状态。为此,我使用 UpTimeRobot。但我看到检查我的机器人是否为 运行 的唯一选项是 HTTP(s)KeywordPingPort。所以我现在的问题是,uptimerobot 如何检查我的机器人是否使用 4 种方法之一在线?哪种方法最简单?我需要做什么才能让它发挥作用?

我在搜索时尝试了很多不同的方法,但找不到解决方案。

这取决于您托管 Discord Bot 的方式。

最简单的方法可能是 运行 在某处设置网络服务器,让您的机器人每隔 X 分钟发送一次请求,让它知道它还活着。

在四个选项中:HTTP(s)、关键字、Ping 和端口 - HTTP 可能是最简单的,但您甚至可能不需要 UpTimeRobot(取决于您希望状态页面看起来多漂亮)。但这需要您在同一系统上 运行 Web 服务器和 Discord Bot。有关详细信息,请参阅此

您可以将 replit 用于 bot.Upload 文件,将机器人的主程序重命名为 main.py,然后将其添加到一个新的空白文件中(将文件命名为 keep_alive):

from flask import Flask
from threading import Thread
app = Flask("")
@app.route("/")
def home():
    return "Hello. I am really alive!"
def run():
    app.run(host="0.0.0.0",port=8080)
def keep_alive():
    t = Thread(target=run)
    t.start()

添加行

import keep_alive
keep_alive.keep_alive()

就在 client.run() 调用之前。
单击 top.You 处的 运行 按钮应该会看到屏幕右上角打开一个面板,上面写着“你好。我真的还活着!”。复制地址栏中的地址 above.Then 设置 UptimeRobot 监视器指向该网站。

注意:此方法完全free.You不需要replit的付费版本account.While它说机器人将在您关闭浏览器选项卡后停止,它实际上在网络不活动 1 小时后关闭。只要UptimeRobot的ping间隔小于1小时就没问题