1. 插件基本结构
插件可以有两种形式:
- 单文件插件:单个
.py 文件 - 插件包:包含
__init__.py 的目录
2. 插件类定义
插件需要继承 Plugins 类,基本结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| from gsuid_core.sv import Plugins, SV
class YourPlugin(Plugins): def __init__( self, name: str = '插件名称', pm: int = 6, priority: int = 5, enabled: bool = True, area: Literal['GROUP', 'DIRECT', 'ALL', 'SV'] = 'SV', black_list: List = [], white_list: List = [], prefix: Union[List[str], str] = [], force_prefix: List[str] = [], disable_force_prefix: bool = False, allow_empty_prefix: Optional[bool] = None, ): super().__init__( name=name, pm=pm, priority=priority, enabled=enabled, area=area, black_list=black_list, white_list=white_list, prefix=prefix, force_prefix=force_prefix, disable_force_prefix=disable_force_prefix, allow_empty_prefix=allow_empty_prefix, )
|
3. 命令定义
使用 SV 类定义命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| sv = SV( name='命令名称', pm=6, priority=5, enabled=True, area='ALL', black_list=[], white_list=[], )
@sv.on('command', '命令关键词') async def your_command(bot: Bot, ev: Event): pass
|
4. 帮助系统
插件需要注册帮助信息:
1 2 3 4 5 6 7 8
| from gsuid_core.help.utils import register_help
register_help( name='插件名称', help='帮助命令', icon=None )
|
5. 状态监控
可以注册插件状态监控:
1 2 3 4 5 6 7 8 9 10
| from gsuid_core.status.plugin_status import register_status
register_status( ICON=your_icon, plugin_name='插件名称', plugin_status={ '状态名称': async_status_function } )
|
6. 配置系统
插件可以定义配置项:
1 2 3 4 5 6 7 8 9 10 11 12
| from gsuid_core.utils.plugins_config.models import ( GsConfig, GsStrConfig, GsListStrConfig )
class YourConfig(GsConfig): title: str = '配置标题' desc: str = '配置描述' data: str = '默认值' options: List[str] = []
|
7. Web控制台支持
插件可以注册Web控制台页面:
1 2 3 4 5 6
| from gsuid_core.webconsole.mount_app import GsAdminSite
@site.register_admin class YourAdminPage(admin.AdminApp): page_schema = PageSchema(label="页面标题", icon="fa fa-icon")
|
8. 插件目录结构
推荐的标准插件目录结构:
1 2 3 4 5 6 7 8 9
| your_plugin/ ├── __init__.py # 插件主入口 ├── __full__.py # 插件包合集(可选) ├── __nest__.py # 嵌套插件(可选) ├── pyproject.toml # 项目配置(可选) ├── src/ # 源代码目录 │ └── your_plugin/ # 插件代码 ├── tests/ # 测试目录 └── README.md # 说明文档
|
9. 插件加载机制
插件支持以下加载方式:
- 单文件插件:直接加载
.py 文件 - 插件包:加载包含
__init__.py 的目录 - 插件包合集:加载包含
__full__.py 的目录 - 嵌套插件:加载包含
__nest__.py 的目录
10. 权限控制
插件支持多级权限控制:
pm 参数控制命令权限等级black_list 和 white_list 控制用户访问area 控制使用范围(群聊/私聊/全部)
11. 命令触发方式
支持多种命令触发方式:
prefix:前缀匹配suffix:后缀匹配keyword:关键词匹配fullmatch:完全匹配command:命令匹配file:文件匹配regex:正则匹配message:消息匹配
注意:这个框架提供了完整的插件开发支持,包括配置管理、权限控制、帮助系统、状态监控等功能,使得插件开发更加规范和便捷。