Metadata-Version: 2.4
Name: nonebot_plugin_lazytea
Version: 0.0.2
Summary: 适用于nonebot2的GUI
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: beautifulsoup4>=4.13.3
Requires-Dist: markdown2>=2.5.3
Requires-Dist: nonebot2>=2.4.2
Requires-Dist: pyside6>=6.9.1
Requires-Dist: ujson>=5.10.0
Requires-Dist: aiofiles>=24.1.0
Requires-Dist: websockets>=15.0.1
Requires-Dist: pydantic>=2.0.0
Requires-Dist: apsw>=3.50.1.0
Requires-Dist: nonebot-plugin-localstore>=0.7.4
Requires-Dist: xxhash>=3.5.0
Requires-Dist: nonebot-plugin-uninfo>=0.8.2
Requires-Dist: nonebot-plugin-alconna>=0.59.0

# 懒人茶 (LazyTea) - 为您的 NoneBot2 献上一杯悠闲的下午茶

*——来喝一杯下午茶，享受片刻的宁静与高效？

**LazyTea** 是一款为 [NoneBot2](https://nonebot.dev/) 精心打造的本地图形化界面（GUI），让您以更直观、更优雅的方式管理您的机器人。

它基于 WebSocket 实现进程间通信，与 NoneBot2 主体高度解耦。这意味着 LazyTea 不仅能为您的本地 Bot 提供强大的管理后台，稍加改造后甚至可以实现远程遥控。我们的目标是提供一个通用 GUI 方案，任何兼容 `ipc/func_call.py` 接口的框架都能轻松接入。

> **温馨提示:**
>
> - **关于配置保存:** 部分插件可能使用非标准数据格式（如 non-serializable 对象和字典）作为配置项，这会导致自动保存失效。我们仍在探索最佳的兼容方案，并欢迎您通过 PR 分享宝贵的想法。
> - **性能小贴士:** 为了获得最佳性能体验，建议在挂机时将 LazyTea 最小化或停留在“概览”页面，以减少不必要的资源占用。

# ✨ 为何选择 LazyTea？

在众多管理工具中，LazyTea 凭借其独特优势脱颖而出：

### **先进的技术架构**

- **现代化UI框架 (PySide6)**: 借助 Qt 6.x 强大的跨平台能力与出色的渲染性能，LazyTea 能够在 Windows, macOS, Linux 等主流操作系统上流畅运行，为您带来丝滑的操作体验。
- **坚如磐石的稳定性 (进程隔离)**: LazyTea 作为独立的子进程运行，与您的 NoneBot2 主进程严格隔离。这意味着，即使 LazyTea 界面意外崩溃，您的机器人本体业务也**不会受到任何影响**，确保7x24小时稳定运行。

### **触手可及的便捷**

> 普通用户无需深入了解技术细节，因为您在使用中自然会感受到这些特性带来的便利。

- **告别混乱配置**: 随着插件越装越多，`.env` 文件难免变得臃肿。LazyTea 能为每个插件自动生成专属的可视化配置页面，让参数修改变得前所未有的直观和简单。
- **插件生态，尽在掌握**:
  - **一键更新**: 为符合规范的插件提供自动更新检查与升级功能，轻松告别手动更新的繁琐。
  - **信息聚合**: 自动展示插件的版本、作者、说明等元数据，让插件管理一目了然。
- **灵活而强大的权限管控**:
  - 提供**非侵入式**的 Matcher 级精细权限控制。
  - 支持**黑/白名单**机制，无论是“禁止某些人使用”还是“只允许某些人使用”，都能轻松实现。
- **高效的话题追踪**: 对聊天中的任意消息右键点击“话题追踪”，即可自动提取关键词，快速检索相关的历史讨论，轻松跟进每一个热点。
- **数据驱动决策**: 通过清晰的图表洞察各个插件的调用情况，帮助您了解用户偏好，优化您的机器人服务。

# 🚀 快速入门

### **系统要求**

*注：Windows 11 系统下部分字体可能显示不全，如遇此问题，欢迎向我们反馈。*


| 配置级别     | 最低要求    | 推荐配置   | 发烧友配置 |
| ------------ | ----------- | ---------- | ---------- |
| **CPU**      | 任意现代CPU | 双核及以上 | i9-14900KS |
| **内存**     | 80 MB       | 100 MB+    | 192 GB     |
| **硬盘空间** | 200 MB      | 300 MB+    | 400 GB+    |

### **安装**

无需任何额外配置！只需按照标准的 NoneBot2 插件安装流程操作，启动您的机器人，LazyTea 的窗口便会自动随之呈现。

```bash
nb plugin install nonebot_plugin_lazytea
```

# 生命周期

LazyTea的版本管理遵循PEP 440标准。

**本项目版本号的递增逻辑**：

* **修订号**：修正bug，改进用户体验以及部分逻辑的完善
* **次版本号**：引入需要一定时间进行验证的较大的功能
* 版本号：项目重构

通常而言，每一个 次版本号 的正式发布需要经过1\~2次Alpha版本，0\~2次Beta版本和一次rc版本。

* Alpha：完成新功能的实现，尽可能确保逻辑正确
* Beta：修正错误，解决边界情况，美化新功能
* rc：验证稳定性与最终的发布前排错

由于精力有限，新版本的Alpha发布代表着上一版本停止修订。

# 开发者指南

我们诚邀各位插件开发者与 LazyTea 进行联动，共同打造更繁荣的生态。

集成方式的实现细节，您可以参考 LazyTea 项目顶层的 `__init__.py` 文件。

### **插件元数据约定**

为了让您的插件更好地被 LazyTea 展示，请在 `metadata` 的 `extra` 字段中添加以下可选信息：


| 字段名         | 类型   | 说明                                                                                 |
| :------------- | :----- | :----------------------------------------------------------------------------------- |
| `version`      | `str`  | 用于版本检查。请确保插件主页设为 GitHub 地址，且版本号与 Git Tag 一致。遵循PEP 440。 |
| `icon_abspath` | `str`  | 插件图标的**绝对路径**。为了获得最佳显示效果，建议使用优化过的小尺寸图片。           |
| `author`       | `str`  | 插件作者的大名。                                                                     |
| `pip_name`     | `str`  | 如果您的插件导入名与 PyPI 包名不同，请在此处填写正确的 PyPI 包名。                   |
| `ui_support`   | `bool` | 将此标志设置为True来允许LazyTea尝试加载自定义页面和相关逻辑。                        |

### **注意事项**

1. ~~**关于自定义配置页面**: 我们有计划允许开发者使用自定义页面替换自动生成的配置页。但考虑到跨语言兼容性和NoneBot插件生态的现状，此功能的优先级目前较低。~~  已经实现，阅读下文。
2. 若您的插件配置项使用了一些non-serializable 对象，我们建议实现pydantic模型提供的字段序列化与数据转换方法。
3. 为了让您的插件自动生成的配置页更加易懂，我们建议使用`Pydantic`的`Field`函数中的`description`参数说明配置项，而非使用Python的文档字符串。
4. **关于权限管理**: LazyTea 会自动处理绝大部分权限兼容问题。为确保最佳效果，我们建议您使用标准的 `Rule` 类型或 `alc` 的规则，而非自定义实现。如果您遇到任何与权限相关的 Bug，欢迎随时提交报告！

### UI开发

您可以为您的插件打造专属的配置页面，以替代 LazyTea 自动生成的页面。

* **技术栈要求**: 自定义 UI 必须使用 PySide6 以确保兼容性。
* **启用开关**: 必须在元数据中将 ui_support 设为 True。
* **解耦设计**: 我们设计了分离式导入机制。这意味着您的插件无需将 LazyTea 作为强制依赖。当用户安装了 LazyTea 时，UI 会自动加载；反之，您的插件将以无UI模式正常运行，不产生任何额外开销。

包顶层的`__init__.py`您可以按照习惯进行编写，不需要特殊适配。这是因为LazyTea在导入时会自动注入包顶层的虚假模块，使得Python跳过`__init__.py`的初始化操作。

在您插件包的顶层目录（**init**.py 所在目录），创建以下两个文件，LazyTea 将会自动发现并加载它们：

#### `__call__.py`

* **导入时机**: GUI 加载完成，**ui**.py 导入之前。
* **运行环境**: 主进程，Async Loop。
* **可用 SDK**: from nonebot_plugin_lazytea.sdk import SDK_nb
* **描 述**: 您可以在此编写与 NoneBot2 主体交互的代码，无任何限制。

#### `__ui__.py`

* **导入时机**: **call**.py 导入完成之后。
* **运行环境:** GUI 子进程，QEventLoop。
* **可用 SDK:** from nonebot_plugin_lazytea.ui.sdk import SDK_UI
* **描 述**: 该文件负责 UI 的构建与交互。
* **重要**: 此文件不应包含或依赖任何 asyncio 或 nonebot 相关代码。async/await 关键字在此不可用。所有与主进程的通信都应通过我们提供的 IPC 接口完成。
* **入口类**: 定义一个名为 ShowMyPlugin 的类，继承自 QWidget。其构造函数应仅接受 parent 参数。LazyTea 将自动实例化这个类，并将其作为您的插件页面展示给用户。

# 开发蓝图

* [X]  ~~**赋能开发者**: 我们正致力于为插件开发者提供更完整、更便捷的接口，让您的插件能与 LazyTea 无缝协作，创造更多可能。~~
* [ ]  **极致性能**: 降低内存占用始终是我们的核心目标之一。尽管挑战重重，我们仍将持续优化，为您提供更轻快的体验。

随着功能迭代，LazyTea 的资源占用可能会有增长趋势。我们会努力平衡功能与性能，并由您自行决定是否更新到最新版本。

---

*“在快节奏的世界里，LazyTea 愿为您留出一片宁静的角落，轻松管理，高效生活。”*

---
