feat:初版
This commit is contained in:
47
utils/plugin_base.py
Normal file
47
utils/plugin_base.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from abc import ABC
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from .decorators import scheduler, add_job_safe, remove_job_safe
|
||||
|
||||
|
||||
class PluginBase(ABC):
|
||||
"""插件基类"""
|
||||
|
||||
# 插件元数据
|
||||
description: str = "暂无描述"
|
||||
author: str = "未知"
|
||||
version: str = "1.0.0"
|
||||
|
||||
def __init__(self):
|
||||
self.enabled = False
|
||||
self._scheduled_jobs = set()
|
||||
|
||||
async def on_enable(self, bot=None):
|
||||
"""插件启用时调用"""
|
||||
|
||||
# 定时任务
|
||||
for method_name in dir(self):
|
||||
method = getattr(self, method_name)
|
||||
if hasattr(method, '_is_scheduled'):
|
||||
job_id = getattr(method, '_job_id')
|
||||
trigger = getattr(method, '_schedule_trigger')
|
||||
trigger_args = getattr(method, '_schedule_args')
|
||||
|
||||
add_job_safe(scheduler, job_id, method, bot, trigger, **trigger_args)
|
||||
self._scheduled_jobs.add(job_id)
|
||||
if self._scheduled_jobs:
|
||||
logger.success("插件 {} 已加载定时任务: {}", self.__class__.__name__, self._scheduled_jobs)
|
||||
|
||||
async def on_disable(self):
|
||||
"""插件禁用时调用"""
|
||||
|
||||
# 移除定时任务
|
||||
for job_id in self._scheduled_jobs:
|
||||
remove_job_safe(scheduler, job_id)
|
||||
logger.info("已卸载定时任务: {}", self._scheduled_jobs)
|
||||
self._scheduled_jobs.clear()
|
||||
|
||||
async def async_init(self):
|
||||
"""插件异步初始化"""
|
||||
return
|
||||
Reference in New Issue
Block a user