From 896f532261358a14e770f729fd48e03478383986 Mon Sep 17 00:00:00 2001 From: Kyomotoi <0w0@imki.moe> Date: Tue, 15 Nov 2022 21:49:02 +0800 Subject: =?UTF-8?q?=F0=9F=8E=A8=20=E4=BC=98=E5=8C=96=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ATRI/plugins/status/data_source.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'ATRI/plugins/status') diff --git a/ATRI/plugins/status/data_source.py b/ATRI/plugins/status/data_source.py index 5daea59..10093c4 100644 --- a/ATRI/plugins/status/data_source.py +++ b/ATRI/plugins/status/data_source.py @@ -3,13 +3,12 @@ import time import psutil from datetime import datetime -from ATRI.service import Service from ATRI.message import MessageBuilder from ATRI.exceptions import GetStatusError _STATUS_MSG = ( - MessageBuilder("> Status Overview") + MessageBuilder("[Status Overview]") .text("[CPU: {b_cpu}% of {p_cpu}%]") .text("[Memory: {b_mem} of {p_mem}%]") .text("[Disk usage: {p_disk}%]") @@ -17,8 +16,9 @@ _STATUS_MSG = ( .text("[Net sent: {inteSENT}MB]") .text("[Net recv: {inteRECV}MB]") .text("") - .text("[Bot runtime: {bot_time}]") - .text("[Platform runtime: {boot_time}]") + .text("[Run Duration]") + .text("[Bot: {bot_time}]") + .text("[Platform: {boot_time}]") .text("{msg}") .done() ) -- cgit v1.2.3 From 4436fa3b6ea4bb54198c0fcc247e48d75942f829 Mon Sep 17 00:00:00 2001 From: Kyomotoi <0w0@imki.moe> Date: Fri, 2 Dec 2022 08:53:23 +0800 Subject: =?UTF-8?q?=F0=9F=94=A5=20=E5=88=A0=E9=99=A4=E5=BC=83=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ATRI/plugins/status/__init__.py | 45 ------------------- ATRI/plugins/status/data_source.py | 88 -------------------------------------- 2 files changed, 133 deletions(-) delete mode 100644 ATRI/plugins/status/__init__.py delete mode 100644 ATRI/plugins/status/data_source.py (limited to 'ATRI/plugins/status') diff --git a/ATRI/plugins/status/__init__.py b/ATRI/plugins/status/__init__.py deleted file mode 100644 index 08e099c..0000000 --- a/ATRI/plugins/status/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -from nonebot import get_bot - -from ATRI import conf -from ATRI.log import log -from ATRI.service import Service -from ATRI.utils.apscheduler import scheduler - -from .data_source import Status - - -plugin = Service("状态").document("检查自身状态") - - -ping = plugin.on_command("/ping", "检测bot简单信息处理速度") - - -@ping.handle() -async def _(): - await ping.finish(Status.ping()) - - -status = plugin.on_command("/status", "查看运行资源占用") - - -@status.handle() -async def _(): - msg, _ = Status.get_status() - await status.finish(msg) - - -info_msg = "アトリは高性能ですから!" - - -@scheduler.scheduled_job("interval", name="状态检查", minutes=10, misfire_grace_time=15) # type: ignore -async def _(): - log.info("开始检查资源消耗...") - msg, stat = Status.get_status() - if not stat: - log.warning(msg) - - bot = get_bot() - for super in conf.BotConfig.superusers: - await bot.send_private_msg(user_id=super, message=msg) - - log.info("资源消耗正常") diff --git a/ATRI/plugins/status/data_source.py b/ATRI/plugins/status/data_source.py deleted file mode 100644 index 10093c4..0000000 --- a/ATRI/plugins/status/data_source.py +++ /dev/null @@ -1,88 +0,0 @@ -import os -import time -import psutil -from datetime import datetime - -from ATRI.message import MessageBuilder -from ATRI.exceptions import GetStatusError - - -_STATUS_MSG = ( - MessageBuilder("[Status Overview]") - .text("[CPU: {b_cpu}% of {p_cpu}%]") - .text("[Memory: {b_mem} of {p_mem}%]") - .text("[Disk usage: {p_disk}%]") - .text("") - .text("[Net sent: {inteSENT}MB]") - .text("[Net recv: {inteRECV}MB]") - .text("") - .text("[Run Duration]") - .text("[Bot: {bot_time}]") - .text("[Platform: {boot_time}]") - .text("{msg}") - .done() -) - - -class Status: - @staticmethod - def ping() -> str: - return "I'm fine." - - @staticmethod - def get_status() -> tuple: - try: - cpu = psutil.cpu_percent(interval=1) - mem = psutil.virtual_memory().percent - disk = psutil.disk_usage("/").percent - inte_send = psutil.net_io_counters().bytes_sent / 1000000 # type: ignore - inte_recv = psutil.net_io_counters().bytes_recv / 1000000 # type: ignore - - process = psutil.Process(os.getpid()) - b_cpu = process.cpu_percent(interval=1) - b_mem = process.memory_percent(memtype="rss") - - now = time.time() - boot = psutil.boot_time() - b = process.create_time() - boot_time = str( - datetime.utcfromtimestamp(now).replace(microsecond=0) - - datetime.utcfromtimestamp(boot).replace(microsecond=0) - ) - bot_time = str( - datetime.utcfromtimestamp(now).replace(microsecond=0) - - datetime.utcfromtimestamp(b).replace(microsecond=0) - ) - except Exception: - raise GetStatusError("Failed to get status.") - - msg = "アトリは、高性能ですから!" - if cpu > 90: # type: ignore - msg = "咱感觉有些头晕..." - is_ok = False - if mem > 90: - msg = "咱感觉有点头晕并且有点累..." - is_ok = False - elif mem > 90: - msg = "咱感觉有点累..." - is_ok = False - elif disk > 90: - msg = "咱感觉身体要被塞满了..." - is_ok = False - else: - is_ok = True - - msg0 = _STATUS_MSG.format( - p_cpu=cpu, - p_mem=mem, - p_disk=disk, - b_cpu=b_cpu, - b_mem="%.1f%%" % b_mem, - inteSENT=inte_send, - inteRECV=inte_recv, - bot_time=bot_time, - boot_time=boot_time, - msg=msg, - ) - - return msg0, is_ok -- cgit v1.2.3