diff options
Diffstat (limited to 'ATRI/plugins/status.py')
-rw-r--r-- | ATRI/plugins/status.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/ATRI/plugins/status.py b/ATRI/plugins/status.py new file mode 100644 index 0000000..576d45e --- /dev/null +++ b/ATRI/plugins/status.py @@ -0,0 +1,50 @@ +import psutil + +from nonebot.plugin import on_command +from nonebot.adapters.cqhttp import Bot, MessageEvent + +from ATRI.rule import is_in_banlist +from ATRI.exceptions import GetStatusError + + +ping = on_command("/ping", rule=is_in_banlist()) + +async def _ping(bot: Bot, event: MessageEvent) -> None: + await ping.finish("I'm fine.") + + +status = on_command("/status", rule=is_in_banlist()) + +async def _status(bot: Bot, event: MessageEvent) -> None: + try: + cpu = psutil.cpu_percent(interval=1) + mem = psutil.virtual_memory().percent + disk = psutil.disk_usage("/").percent + inteSENT = psutil.net_io_counters().bytes_sent / 1000000 # type: ignore + inteRECV = psutil.net_io_counters().bytes_sent / 1000000 # type: ignore + except GetStatusError: + raise GetStatusError("Failed to get status.") + + msg = "アトリは、高性能ですから!" + + if cpu > 80: # type: ignore + msg = "咱感觉有些头晕..." + if mem > 80: + msg = "咱感觉有点头晕并且有点累..." + elif mem > 80: + msg = "咱感觉有点累..." + elif disk > 80: + msg = "咱感觉身体要被塞满了..." + + msg0 = ( + "Self status:\n" + f"* CPU: {cpu}%\n" + f"* MEM: {mem}%\n" + f"* DISK: {disk}%\n" + f"* netSENT: {inteSENT}MB\n" + f"* netRECV: {inteRECV}MB\n" + ) + msg + + await status.finish(msg0) |