mirror of
				https://github.com/LiteyukiStudio/LiteyukiBot.git
				synced 2025-10-31 19:36:24 +00:00 
			
		
		
		
	feat: 支持天气
This commit is contained in:
		
							
								
								
									
										129
									
								
								liteyuki/liteyuki_main/runtime.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								liteyuki/liteyuki_main/runtime.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,129 @@ | ||||
| import platform | ||||
|  | ||||
| import nonebot | ||||
| import psutil | ||||
| from cpuinfo import get_cpu_info | ||||
| from nonebot import on_command | ||||
| from nonebot.adapters.onebot.v11 import MessageSegment | ||||
| from nonebot.permission import SUPERUSER | ||||
|  | ||||
| from liteyuki.utils import __NAME__, __VERSION__ | ||||
| from liteyuki.utils.htmlrender import template_to_pic | ||||
| from liteyuki.utils.language import get_user_lang | ||||
| from liteyuki.utils.ly_typing import T_Bot, T_MessageEvent | ||||
| from liteyuki.utils.resource import get_path | ||||
| from liteyuki.utils.tools import convert_size | ||||
|  | ||||
| stats = on_command("stats", aliases={"状态"}, priority=5, permission=SUPERUSER) | ||||
|  | ||||
| protocol_names = { | ||||
|         0: "iPad", | ||||
|         1: "Android Phone", | ||||
|         2: "Android Watch", | ||||
|         3: "Mac", | ||||
|         5: "iPad", | ||||
|         6: "Android Pad", | ||||
| } | ||||
|  | ||||
|  | ||||
| @stats.handle() | ||||
| async def _(bot: T_Bot, event: T_MessageEvent): | ||||
|     ulang = get_user_lang(str(event.user_id)) | ||||
|     fake_device_info: dict = bot.config.dict().get("fake_device_info", {}) | ||||
|     mem_total = fake_device_info.get('mem', {}).get('total', psutil.virtual_memory().total) | ||||
|  | ||||
|     mem_used_bot = psutil.Process().memory_info().rss | ||||
|     mem_used_other = psutil.virtual_memory().used - mem_used_bot | ||||
|     mem_free = mem_total - mem_used_other - mem_used_bot | ||||
|  | ||||
|     groups = len(await bot.get_group_list()) | ||||
|     friends = len(await bot.get_friend_list()) | ||||
|  | ||||
|     status = await bot.get_status() | ||||
|     statistics = status.get("stat", {}) | ||||
|     version_info = await bot.get_version_info() | ||||
|  | ||||
|     cpu_info = get_cpu_info() | ||||
|     if "AMD" in cpu_info.get("brand_raw", ""): | ||||
|         brand = "AMD" | ||||
|     elif "Intel" in cpu_info.get("brand_raw", ""): | ||||
|         brand = "Intel" | ||||
|     else: | ||||
|         brand = "Unknown" | ||||
|  | ||||
|     if fake_device_info.get("cpu", {}).get("brand"): | ||||
|         brand = fake_device_info.get("cpu", {}).get("brand") | ||||
|  | ||||
|     cpu_info = get_cpu_info() | ||||
|     templ = { | ||||
|             "CPUDATA"  : [ | ||||
|                     { | ||||
|                             "name" : "USED", | ||||
|                             "value": psutil.cpu_percent(interval=1) | ||||
|                     }, | ||||
|                     { | ||||
|                             "name" : "FREE", | ||||
|                             "value": 100 - psutil.cpu_percent(interval=1) | ||||
|                     } | ||||
|             ], | ||||
|             "MEMDATA"  : [ | ||||
|  | ||||
|                     { | ||||
|                             "name" : "OTHER", | ||||
|                             "value": mem_used_other | ||||
|                     }, | ||||
|                     { | ||||
|                             "name" : "FREE", | ||||
|                             "value": mem_free | ||||
|                     }, | ||||
|                     { | ||||
|                             "name" : "BOT", | ||||
|                             "value": mem_used_bot | ||||
|                     }, | ||||
|             ], | ||||
|             "SWAPDATA" : [ | ||||
|                     { | ||||
|                             "name" : "USED", | ||||
|                             "value": psutil.swap_memory().used | ||||
|                     }, | ||||
|                     { | ||||
|                             "name" : "FREE", | ||||
|                             "value": psutil.swap_memory().free | ||||
|                     } | ||||
|             ], | ||||
|             "BOT_ID"   : bot.self_id, | ||||
|             "BOT_NAME" : (await bot.get_login_info())["nickname"], | ||||
|             "BOT_TAGS" : [ | ||||
|                     protocol_names.get(version_info.get("protocol_name"), "Linux"), version_info.get("app_name"), version_info.get("app_version"), | ||||
|                     f"{ulang.get('liteyuki.stats.groups')} {groups}", f"{ulang.get('liteyuki.stats.friends')} {friends}", | ||||
|                     f"{ulang.get('liteyuki.stats.sent')} {statistics.get('message_sent', 0)}", | ||||
|                     f"{ulang.get('liteyuki.stats.received')} {statistics.get('message_received', 0)}", | ||||
|                     f"{platform.python_implementation()} {platform.python_version()}", | ||||
|                     f"Nonebot {nonebot.__version__}", f"{__NAME__} {__VERSION__}" | ||||
|             ], | ||||
|             "CPU_TAGS" : [ | ||||
|                     f"{brand} {cpu_info.get('arch', 'Unknown')}", | ||||
|                     f"{fake_device_info.get('cpu', {}).get('cores', psutil.cpu_count(logical=False))}C " | ||||
|                     f"{fake_device_info.get('cpu', {}).get('logical_cores', psutil.cpu_count(logical=True))}T", | ||||
|                     f"{fake_device_info.get('cpu', {}).get('frequency', psutil.cpu_freq().current) / 1000}GHz" | ||||
|             ], | ||||
|             "MEM_TAGS" : [ | ||||
|                     f"Bot {convert_size(mem_used_bot, 1)}", | ||||
|                     f"{ulang.get('main.monitor.used')} {convert_size(mem_used_other + mem_used_bot, 1)}", | ||||
|                     f"{ulang.get('main.monitor.total')} {convert_size(mem_total, 1)}", | ||||
|             ], | ||||
|             "SWAP_TAGS": [ | ||||
|                     f"{ulang.get('main.monitor.used')} {convert_size(psutil.swap_memory().used, 1)}", | ||||
|                     f"{ulang.get('main.monitor.total')} {convert_size(psutil.swap_memory().total, 1)}", | ||||
|             ], | ||||
|             "CPU"      : ulang.get("main.monitor.cpu"), | ||||
|             "MEM"      : ulang.get("main.monitor.memory"), | ||||
|             "SWAP"     : ulang.get("main.monitor.swap"), | ||||
|     } | ||||
|     image_bytes = await template_to_pic( | ||||
|         template_path=get_path("templates/stats.html", abs_path=True), | ||||
|         templates=templ, | ||||
|         device_scale_factor=4, | ||||
|     ) | ||||
|     # await md.send_image(image_bytes, bot, event=event) | ||||
|     await stats.finish(MessageSegment.image(image_bytes)) | ||||
		Reference in New Issue
	
	Block a user