ssss
This commit is contained in:
@@ -38,17 +38,38 @@ def _get_system_info():
|
||||
cpu_percent = psutil.cpu_percent(interval=1)
|
||||
mem_info = psutil.virtual_memory()
|
||||
bot_mem_mb = PROCESS.memory_info().rss / (1024 * 1024)
|
||||
|
||||
# 磁盘信息
|
||||
disk_usage = psutil.disk_usage('/')
|
||||
|
||||
# 网络信息
|
||||
net_io = psutil.net_io_counters()
|
||||
|
||||
return {
|
||||
"cpu_percent": f"{cpu_percent:.1f}",
|
||||
"mem_percent": f"{mem_info.percent:.1f}",
|
||||
"mem_total": f"{mem_info.total / (1024**3):.1f}",
|
||||
"mem_used": f"{mem_info.used / (1024**3):.1f}",
|
||||
"bot_mem_mb": f"{bot_mem_mb:.2f}",
|
||||
"disk_percent": f"{disk_usage.percent:.1f}",
|
||||
"disk_total": f"{disk_usage.total / (1024**3):.1f}",
|
||||
"disk_used": f"{disk_usage.used / (1024**3):.1f}",
|
||||
"net_sent": f"{net_io.bytes_sent / (1024**2):.1f}",
|
||||
"net_recv": f"{net_io.bytes_recv / (1024**2):.1f}",
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"获取系统信息失败: {e}")
|
||||
return {
|
||||
"cpu_percent": "N/A",
|
||||
"mem_percent": "N/A",
|
||||
"mem_total": "N/A",
|
||||
"mem_used": "N/A",
|
||||
"bot_mem_mb": "N/A",
|
||||
"disk_percent": "N/A",
|
||||
"disk_total": "N/A",
|
||||
"disk_used": "N/A",
|
||||
"net_sent": "N/A",
|
||||
"net_recv": "N/A",
|
||||
}
|
||||
|
||||
@matcher.command("status", "状态")
|
||||
@@ -60,18 +81,22 @@ async def handle_status(bot: Bot, event: MessageEvent, args: list[str]):
|
||||
|
||||
try:
|
||||
# 1. 获取API信息 (增加独立错误处理)
|
||||
try:
|
||||
# 优先使用 get_stranger_info 获取自身信息,比 get_login_info 更轻量
|
||||
stranger_info = await bot.get_stranger_info(user_id=bot.self_id)
|
||||
nickname = stranger_info.nickname
|
||||
except Exception as e:
|
||||
logger.warning(f"获取 stranger_info 失败: {e}, 将回退到 login_info")
|
||||
# 尝试获取或更新 bot.nickname
|
||||
if not hasattr(bot, "nickname") or not bot.nickname:
|
||||
try:
|
||||
login_info = await bot.get_login_info()
|
||||
nickname = login_info.nickname
|
||||
except Exception as e2:
|
||||
logger.warning(f"获取 login_info 也失败了: {e2}")
|
||||
nickname = "获取失败"
|
||||
# 优先使用 get_stranger_info 获取自身信息,比 get_login_info 更轻量
|
||||
stranger_info = await bot.get_stranger_info(user_id=bot.self_id)
|
||||
bot.nickname = stranger_info.nickname
|
||||
except Exception as e:
|
||||
logger.warning(f"获取 stranger_info 失败: {e}, 将回退到 login_info")
|
||||
try:
|
||||
login_info = await bot.get_login_info()
|
||||
bot.nickname = login_info.nickname
|
||||
except Exception as e2:
|
||||
logger.warning(f"获取 login_info 也失败了: {e2}")
|
||||
bot.nickname = "获取失败"
|
||||
|
||||
nickname = bot.nickname
|
||||
|
||||
# 状态信息:如果能响应此命令,说明机器人必然在线且状态良好
|
||||
# 这避免了依赖可能超时或未实现的 get_status API
|
||||
@@ -138,14 +163,28 @@ async def handle_status(bot: Bot, event: MessageEvent, args: list[str]):
|
||||
system_data = {
|
||||
"cpu_percent": "Timeout",
|
||||
"mem_percent": "Timeout",
|
||||
"mem_total": "Timeout",
|
||||
"mem_used": "Timeout",
|
||||
"bot_mem_mb": "Timeout",
|
||||
"disk_percent": "Timeout",
|
||||
"disk_total": "Timeout",
|
||||
"disk_used": "Timeout",
|
||||
"net_sent": "Timeout",
|
||||
"net_recv": "Timeout",
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"获取系统信息异常: {e}")
|
||||
system_data = {
|
||||
"cpu_percent": "Error",
|
||||
"mem_percent": "Error",
|
||||
"mem_total": "Error",
|
||||
"mem_used": "Error",
|
||||
"bot_mem_mb": "Error",
|
||||
"disk_percent": "Error",
|
||||
"disk_total": "Error",
|
||||
"disk_used": "Error",
|
||||
"net_sent": "Error",
|
||||
"net_recv": "Error",
|
||||
}
|
||||
|
||||
# 5. 准备模板所需的所有数据
|
||||
|
||||
Reference in New Issue
Block a user