Files
LinuxAwesomeBot/README.md
T

95 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LinuxAwesomeBot
轻量级 OneBot 11 Python 机器人:查看 Linux 功耗/CPU/内存/温度/网络,并在 CPU 高负载时主动提醒并列出高负载进程。
基于 `aiohttp` + `psutil`,机器人作为**反向 WebSocket 服务端**运行,NapCat / Lagrange / go-cqhttp 等 OneBot 实现端主动连入。
## 安装
```bash
pip install aiohttp psutil
```
## 配置
```bash
cp config.example.toml config.toml
# 编辑 config.toml:端口、access_token、告警群号/好友号、CPU 阈值
```
## 启动机器人
```bash
python bot.py
```
## OneBot 实现端配置(以 NapCat 为例)
在 NapCat 的 `onebot11` 网络配置中添加**反向 WebSocket**:
```json
{
"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 也可)
```bash
python test_fake_onebot.py
```
模拟一个 OneBot 实现端连入并逐条发送命令,验证机器人的回复。
## systemd 部署(Linux)
```ini
# /etc/systemd/system/linuxawesomebot.service
[Unit]
Description=LinuxAwesomeBot
After=network.target
[Service]
WorkingDirectory=/opt/LinuxAwesomeBot
ExecStart=/usr/bin/python3 bot.py
Restart=always
[Install]
WantedBy=multi-user.target
```
```bash
systemctl enable --now linuxawesomebot
```