使用Python编写 NoneBot2插件 显示系统CPU、磁盘、内存的占用状态。

sys_states 插件目录,__pycache__文件无需创建。

init.py文件

  • on_command:消息事件响应器
  • on_notice:通知事件响应器
  • export:获取插件的导出内容对象
from nonebot.adapters.cqhttp import Bot, Event, PokeNotifyEvent
from nonebot.adapters.cqhttp.message import Message
from nonebot.plugin import export, on_command, on_notice
from nonebot.rule import Rule
from nonebot.typing import T_Statefrom .info_get import get_sys_infoexport = export()
export.name = '系统状态'
export.usage = '戳一戳以获取系统当前状态'async def _is_poke(bot: Bot, event: Event, state: T_State) -> bool:return isinstance(event, PokeNotifyEvent) and event.is_tome()sys_info = on_notice(Rule(_is_poke), priority=50, block=True)
@sys_info.handle()
async def sys_info_handle(bot: Bot, event: Event, state: T_State):info = get_sys_info('b')await sys_info.send(info)

安装 psutil 库

pip install psutil

info_get.py 文件

import psutildef cpu_info():cpu = str(psutil.cpu_times())user   = float(cpu.split('user=')[1].split(',')[0])system = float(cpu.split('system=')[1].split(',')[0])idle   = float(cpu.split('idle=')[1].split(',')[0])return {'used' : round(user+system,1),'user' : round(user,1),'syst' : round(system,1),'free' : round(idle,1),'prec' : round((1 - idle/(user+system+idle))*100,1)}def mem_info():mem = str(psutil.virtual_memory())return {'total'     : round(float(mem.split('total=')[1].split(',')[0])/(1024**3),1),'available' : round(float(mem.split('available=')[1].split(',')[0])/(1024**3),1),'percent'   : float(mem.split('percent=')[1].split(',')[0])}def disk_info():disk = str(psutil.disk_usage('/'))return {'total'  : round(float(disk.split('total=')[1].split(',')[0])/(1024**3),1),'free'   : round(float(disk.split('free=')[1].split(',')[0])/(1024**3),1),'percent': float(disk.split('percent=')[1].split(',')[0].strip(')'))}def get_sys_info(method):cpu  = cpu_info()mem  = mem_info()disk = disk_info()if method == 'a':return f'————————CPU————————\\nCPU使用时间:{cpu["used"]}\\n ->系统占用:{cpu["syst"]}\\n ->用户占用:{cpu["user"]}\\nCPU闲置时间:{cpu["free"]}\\nCPU占用率:{cpu["prec"]}%\\n————————MEM————————\\n总内存:{mem["total"]}GB\\n可用内存:{mem["available"]}GB\\n内存占用率:{mem["percent"]}%\\n————————DISK————————\\n磁盘总空间:{disk["total"]}GB\\n磁盘可用空间:{disk["free"]}GB\\n磁盘占用率:{disk["percent"]}%'elif method == 'b':return f'CPU占用率:{cpu["prec"]}%\\n内存占用率:{mem["percent"]}%\\n磁盘占用率:{disk["percent"]}%'

加载插件目录

在 bot.py 文件中添加以下行:

# 加载插件目录,该目录下为各插件,以下划线开头的插件将不会被加载
nonebot.load_plugins("awesome_bot/plugins")app = nonebot.get_asgi()

我的 bot.py 文件 如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import nonebot
from nonebot.adapters.cqhttp import Bot as CQHTTPBotnonebot.init()
app = nonebot.get_asgi()driver = nonebot.get_driver()
driver.register_adapter("cqhttp", CQHTTPBot)nonebot.load_builtin_plugins()  # 加载 nonebot 内置插件
nonebot.load_from_toml("pyproject.toml")
nonebot.load_plugins("src/plugins") # 加载插件目录,该目录下为各插件,以下划线开头的插件将不会被加载
app = nonebot.get_asgi()if __name__ == "__main__":nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")nonebot.run(app="__mp_main__:app")

运行结果
尝试运行 python bot.py,可以看到日志输出了类似如下内容:

08-04 14:26:20 [DEBUG] nonebot | Succeeded to load adapter "cqhttp"
08-04 14:26:20 [INFO] nonebot | Succeeded to import "nonebot.plugins.echo"
08-04 14:26:20 [INFO] nonebot | Succeeded to import "sys_states"
08-04 14:26:20 [INFO] uvicorn | Started server process [21184]
08-04 14:26:20 [INFO] uvicorn | Waiting for application startup.
08-04 14:26:20 [INFO] uvicorn | Application startup complete.


说明插件安装成功。
开始在QQ上使用,查看效果,使用手机QQ对机器人头像戳一戳,就会自动打印电脑的

  • CPU占用率
  • 内存占用率
  • 磁盘占用率

NoneBot2插件——打印系统状态相关推荐

  1. Android调用系统默认打印机并反射获取打印任务状态

    Android4.4通过PrintManger调用系统默认打印服务的默认打印机进行打印任务,并通过反射调用PrintManager的getPrintJob方法获取打印任务状态.不说太多,直接上代码.第 ...

  2. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置

    目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...

  3. .NET Conf 2020 - 基于ASP.NET Core构建可热插拔的插件化系统

    文章标题:.NET Conf 2020 - 基于ASP.NET Core构建可热插拔的插件化系统 作者:Lamond Lu 项目地址:https://github.com/lamondlu/CoolC ...

  4. 监控Linux系统状态的命令

    监控Linux系统状态的命令1 :w uptime命令查看系统负载 : w/uptime 最后面三个数字表示1分钟 ,5分钟 ,15分钟 平均有多少进程占用CPU 某一时刻1颗CPU只能有一个进程在使 ...

  5. linux cups工作原理,Linux打印系统CUPS原理分析

    二.通用Unix打印系统(CUPS) 2.1 CUPS简介 CUPS使用的是IPP(网络打印协议)标准,这是从HTTP中衍生出来的IETF协议.CUPS后台程序可以接受IPP请求,并且将其作为和客户端 ...

  6. Citrix XenApp和XenDesktop 打印系统解析②

    三.思杰通用打印解决方案 思杰的通用解决方案推出的时间很久了,在2004年的思杰iForum大会上,Citrix宣布推出通用打印机驱动程序(UPD)并激动的宣布,Citrix已经永久性的解决了打印的问 ...

  7. Citrix XenApp和XenDesktop 打印系统解析③

    Citrix Universal PrintServer(UPS) 3.3.1.Citrix UPS概述 Citrix UniversalPrinter Server(以下简称UPS)是一个XenAp ...

  8. 一点通票据打印系统 v3.5 专业版 bt

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  9. 理正消息服务器,理正图纸打印系统

    产品简介 产品简介 理正图纸打印产品提供图纸批量打印工具辅助设计人员快进行图纸打印,在进行图纸打印的过程中可自动收集所打印的电子图纸文件上传打印服务器进行归档.通过该系统,不仅提高设计人员出图打印效率 ...

最新文章

  1. 从0开始,基于Python探究深度学习神经网络
  2. 聊聊高并发下的接口幂等性
  3. Netty 高性能之道 - Recycler 对象池的复用
  4. android微信支付的实现
  5. C语言ctype相关的几个函数
  6. MongoDB数据库备份恢复与导入导出
  7. 蛋白粉有什么作用?搭配这些食物帮助提升免疫力!
  8. 12) 十分钟学会android--APP通信传递消息之简单数据传输
  9. SQLAlchemy文档翻译
  10. (230)数据处理或加速方法(加速处理器)
  11. ldap实现用户认证
  12. lrzsz离线安装方法
  13. 正则表达式验证输入用户名格式是否正确
  14. JAVA王思聪吃热狗程序_王思聪申请“吃热狗”专利,“吃热狗”已经要付费啦...
  15. SOSOAPI前后端分离开发模式下的接口测试
  16. linux分段加载程序_Linux的分段机制
  17. 《跨界杂谈》华为印象(二):MTS
  18. 京东联盟高级API - 京东联盟转链接口 京东客转链接口 京粉转链接口 京东联盟返利接口 京东返利接口
  19. java加载so包,undefined symbol处理方法
  20. 2021年茶艺师(初级)考试题库及茶艺师(初级)考试技巧

热门文章

  1. 嘉兴新型智慧城市建设带来的三个问号
  2. 项目乱码 GBK转UTF-8工具
  3. 搭建通用性多用户后台-思路
  4. startActivityForResult()
  5. 新元素之section,article,aside
  6. 【Hibernate步步为营】--关联映射之多对一
  7. Struts2中表单与Action传递数据三种方式
  8. java实践源码--哈弗曼树
  9. 后台开发经典书籍--大型分布式网站架构设计与实践
  10. 把二叉搜索树转换为累加树