|
33 | 33 | from .context import Context |
34 | 34 | from .filter.permission import PermissionType, PermissionTypeFilter |
35 | 35 | from .star import star_map, star_registry |
36 | | -from .star_handler import star_handlers_registry |
| 36 | +from .star_handler import star_handlers_registry, EventType |
37 | 37 | from .updator import PluginUpdator |
38 | 38 |
|
39 | 39 | try: |
@@ -772,6 +772,19 @@ async def load( |
772 | 772 | if hasattr(metadata.star_cls, "initialize") and metadata.star_cls: |
773 | 773 | await metadata.star_cls.initialize() |
774 | 774 |
|
| 775 | + # 触发插件加载事件 |
| 776 | + handlers = star_handlers_registry.get_handlers_by_event_type( |
| 777 | + EventType.OnPluginLoadedEvent, |
| 778 | + ) |
| 779 | + for handler in handlers: |
| 780 | + try: |
| 781 | + logger.info( |
| 782 | + f"hook(on_plugin_loaded) -> {star_map[handler.handler_module_path].name} - {handler.handler_name}", |
| 783 | + ) |
| 784 | + await handler.handler(metadata) |
| 785 | + except Exception: |
| 786 | + logger.error(traceback.format_exc()) |
| 787 | + |
775 | 788 | except BaseException as e: |
776 | 789 | logger.error(f"----- 插件 {root_dir_name} 载入失败 -----") |
777 | 790 | errors = traceback.format_exc() |
@@ -1159,6 +1172,19 @@ async def _terminate_plugin(star_metadata: StarMetadata) -> None: |
1159 | 1172 | elif "terminate" in star_metadata.star_cls_type.__dict__: |
1160 | 1173 | await star_metadata.star_cls.terminate() |
1161 | 1174 |
|
| 1175 | + # 触发插件卸载事件 |
| 1176 | + handlers = star_handlers_registry.get_handlers_by_event_type( |
| 1177 | + EventType.OnPluginUnloadedEvent, |
| 1178 | + ) |
| 1179 | + for handler in handlers: |
| 1180 | + try: |
| 1181 | + logger.info( |
| 1182 | + f"hook(on_plugin_loaded) -> {star_map[handler.handler_module_path].name} - {handler.handler_name}", |
| 1183 | + ) |
| 1184 | + await handler.handler(star_metadata) |
| 1185 | + except Exception: |
| 1186 | + logger.error(traceback.format_exc()) |
| 1187 | + |
1162 | 1188 | async def turn_on_plugin(self, plugin_name: str) -> None: |
1163 | 1189 | plugin = self.context.get_registered_star(plugin_name) |
1164 | 1190 | if plugin is None: |
|
0 commit comments