基本完成课表生成

This commit is contained in:
2026-04-02 23:16:08 +08:00
parent 868abb2358
commit a003931207
3 changed files with 220 additions and 86 deletions

67
AGENTS.md Normal file
View File

@@ -0,0 +1,67 @@
# AGENTS.md
本文档面向 AI 编程助手,介绍本项目的结构、技术栈与开发约定。
## 项目概述
本项目是一个 [AstrBot](https://github.com/AstrBotDevs/AstrBot) 插件,目录名为 `astrbot_plugin_njupt_suan`,但当前代码是基于 AstrBot 官方插件模板的初始状态。插件仅实现了一个简单的 `helloworld` 指令,用于演示 AstrBot 插件的基本写法。
- **技术栈**Python 3异步 asyncio
- **运行方式**:不能独立运行,必须由 AstrBot 主程序动态加载
- **项目规模**:极简单文件插件,目前仅包含一个入口模块
## 项目结构
```
.
├── main.py # 插件主代码,注册指令与事件处理逻辑
├── metadata.yaml # AstrBot 插件元数据(名称、版本、作者等)
├── README.md # 面向用户的项目说明
├── LICENSE # 许可证文件
├── .gitignore # Python 通用 gitignore
└── AGENTS.md # 本文档
```
> 注意:项目中**不存在** `pyproject.toml`、`setup.py`、`requirements.txt`、`package.json` 等常规构建配置文件,因为 AstrBot 插件是直接在宿主环境中运行的动态模块。
## 核心文件说明
### `main.py`
- 定义插件类 `MyPlugin`,继承自 `astrbot.api.star.Star`
- 使用 `@register(...)` 装饰器向 AstrBot 注册插件
- 使用 `@filter.command("helloworld")` 注册聊天指令 `/helloworld`
- 实现了可选的生命周期方法 `initialize()`(初始化)和 `terminate()`(卸载)
### `metadata.yaml`
- AstrBot 识别插件的核心配置文件
- 关键字段:`name`(唯一标识名)、`version``author``desc``repo`
- 当前内容仍为模板默认值(`helloworld`),后续开发需根据实际功能更新
## 开发与修改约定
1. **单文件扩展**:当前所有逻辑集中在 `main.py`。若功能变复杂,可在同目录下新增 `.py` 模块并在 `main.py` 中导入。
2. **命名规范**
- 插件唯一名(`metadata.yaml` 中的 `name`)建议以 `astrbot_plugin_` 开头
- 类名使用大驼峰(如 `MyPlugin`
- 指令名使用小写英文+下划线
3. **注释语言**代码内注释以中文为主README 为中英混合。新增注释建议保持中文。
4. **依赖管理**:如需引入第三方 Python 包,请在 `metadata.yaml` 同级目录下创建 `requirements.txt`AstrBot 会在安装插件时尝试自动安装。但目前项目中尚未创建该文件。
## 构建与测试
- **无独立构建步骤**:插件无需编译或打包成 wheel。
- **测试方式**:需在本地部署 AstrBot 主程序,将本目录放入 AstrBot 的 `plugins/` 文件夹(或通过 AstrBot 插件市场/控制台安装),然后启动 AstrBot 进行联调。
- **目前无单元测试**:目录内没有 `tests/` 文件夹或测试框架配置。
## 部署流程
1. 修改 `metadata.yaml` 中的 `name``display_name``desc``version``author``repo` 为实际信息。
2. 修改 `main.py` 中的 `@register(...)` 参数与 `metadata.yaml` 保持一致。
3. 如需额外依赖,添加 `requirements.txt`
4. 将代码推送到远程仓库后,可在 AstrBot 插件市场提交或通过 Git 链接直接安装。
## 安全提示
- 插件运行在 AstrBot 主程序的 Python 进程中,拥有与宿主相同的权限。
- 避免在插件中执行不可信的外部命令或随意 `eval` 用户输入。
- 若需存储持久化数据,建议使用 AstrBot 提供的配置/数据目录 API而不是随意写入当前工作目录。