Files
LinuxAwesomeBot/README.md
T

2.6 KiB
Raw Blame History

LinuxAwesomeBot

轻量级 OneBot 11 Python 机器人:查看 Linux 功耗/CPU/内存/温度/网络,并在 CPU 高负载时主动提醒并列出高负载进程。

基于 aiohttp + psutil,机器人作为反向 WebSocket 服务端运行,NapCat / Lagrange / go-cqhttp 等 OneBot 实现端主动连入。

安装

使用 uv 管理依赖(首次运行会自动创建虚拟环境并安装依赖):

uv sync

配置

cp config.example.toml config.toml
# 编辑 config.toml:端口、access_token、告警群号/好友号、CPU 阈值

启动机器人

uv run python bot.py

OneBot 实现端配置(以 NapCat 为例)

在 NapCat 的 onebot11 网络配置中添加反向 WebSocket:

{
  "ws": {
    "enable": true,
    "url": "ws://127.0.0.1:8765/ws",
    "token": ""
  }
}

token 需与 config.toml 的 access_token 一致(都留空也可)。

聊天命令

群聊需 @机器人 或使用 /、! 前缀;私聊直接发。

命令 说明
/status 或 状态 总览:功耗、CPU、负载、内存、最高温度、网速、运行时间
/power 或 功耗 功耗详情(电池功率 / Intel RAPL 各域瓦数)
/top 或 进程 CPU 占用 TOP10 进程
/temp 或 温度 各传感器温度
/net 或 网络 网络上下行速率
/help 或 帮助 命令帮助

高负载告警

后台每 10 秒采样,CPU 连续 2 次超过阈值(默认 85%)即向配置的群/好友推送告警, 消息包含当前 CPU%、负载和 TOP5 高负载进程(PID/名称/CPU/内存)。同一轮高负载期间 冷却 10 分钟不重复告警;回落到阈值以下会发送恢复通知。以上均可在 config.toml 的 [alert] 中调整。

功耗说明

  • 笔记本:读取 /sys/class/power_supply/BAT*/power_now
  • Intel CPU:读取 RAPL /sys/class/powercap/intel-rapl:*/energy_uj,两次采样差分计算瓦数
  • AMD CPU / 多数虚拟机 / 云主机:无硬件计数器,/power 会提示不支持(属正常)

本地测试(Windows 也可)

uv run python test_fake_onebot.py

模拟一个 OneBot 实现端连入并逐条发送命令,验证机器人的回复。

systemd 部署(Linux)

# /etc/systemd/system/linuxawesomebot.service
[Unit]
Description=LinuxAwesomeBot
After=network.target

[Service]
WorkingDirectory=/opt/LinuxAwesomeBot
ExecStart=/usr/local/bin/uv run python bot.py
Restart=always

[Install]
WantedBy=multi-user.target
systemctl enable --now linuxawesomebot