|
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 EventType, star_handlers_registry |
37 | 37 | from .updator import PluginUpdator |
38 | 38 |
|
39 | 39 | try: |
@@ -783,6 +783,19 @@ async def load( |
783 | 783 | if hasattr(metadata.star_cls, "initialize") and metadata.star_cls: |
784 | 784 | await metadata.star_cls.initialize() |
785 | 785 |
|
| 786 | + # 触发插件加载事件 |
| 787 | + handlers = star_handlers_registry.get_handlers_by_event_type( |
| 788 | + EventType.OnPluginLoadedEvent, |
| 789 | + ) |
| 790 | + for handler in handlers: |
| 791 | + try: |
| 792 | + logger.info( |
| 793 | + f"hook(on_plugin_loaded) -> {star_map[handler.handler_module_path].name} - {handler.handler_name}", |
| 794 | + ) |
| 795 | + await handler.handler(metadata) |
| 796 | + except Exception: |
| 797 | + logger.error(traceback.format_exc()) |
| 798 | + |
786 | 799 | except BaseException as e: |
787 | 800 | logger.error(f"----- 插件 {root_dir_name} 载入失败 -----") |
788 | 801 | errors = traceback.format_exc() |
@@ -1175,6 +1188,19 @@ async def _terminate_plugin(star_metadata: StarMetadata) -> None: |
1175 | 1188 | elif "terminate" in star_metadata.star_cls_type.__dict__: |
1176 | 1189 | await star_metadata.star_cls.terminate() |
1177 | 1190 |
|
| 1191 | + # 触发插件卸载事件 |
| 1192 | + handlers = star_handlers_registry.get_handlers_by_event_type( |
| 1193 | + EventType.OnPluginUnloadedEvent, |
| 1194 | + ) |
| 1195 | + for handler in handlers: |
| 1196 | + try: |
| 1197 | + logger.info( |
| 1198 | + f"hook(on_plugin_unloaded) -> {star_map[handler.handler_module_path].name} - {handler.handler_name}", |
| 1199 | + ) |
| 1200 | + await handler.handler(star_metadata) |
| 1201 | + except Exception: |
| 1202 | + logger.error(traceback.format_exc()) |
| 1203 | + |
1178 | 1204 | async def turn_on_plugin(self, plugin_name: str) -> None: |
1179 | 1205 | plugin = self.context.get_registered_star(plugin_name) |
1180 | 1206 | if plugin is None: |
|
0 commit comments