初始化提交
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# Custom Plugins Directory
|
||||
|
||||
此目录用于存放热加载的自定义插件。
|
||||
|
||||
## 热加载机制
|
||||
|
||||
1. 插件文件放在此目录下
|
||||
2. 修改插件文件后会自动重新加载
|
||||
3. 无需重启 Docker
|
||||
|
||||
## 创建插件
|
||||
|
||||
```python
|
||||
# ///
|
||||
# my_plugin.py
|
||||
# 描述:我的自定义插件
|
||||
# ///
|
||||
|
||||
from plugins.base import PluginBase, PluginType
|
||||
|
||||
class MyPlugin(PluginBase):
|
||||
plugin_name = "my_plugin"
|
||||
plugin_version = "1.0.0"
|
||||
plugin_type = PluginType.CUSTOM
|
||||
plugin_description = "我的自定义插件"
|
||||
plugin_author = "开发者"
|
||||
|
||||
def initialize(self, config: dict) -> bool:
|
||||
self.config = config
|
||||
return True
|
||||
|
||||
def execute(self, params: dict) -> dict:
|
||||
return {"success": True, "result": "done"}
|
||||
```
|
||||
|
||||
## 定时任务插件示例
|
||||
|
||||
```python
|
||||
# ///
|
||||
# my_scheduled_plugin.py
|
||||
# 描述:定时任务插件示例
|
||||
# ///
|
||||
|
||||
from plugins.base import ScheduledTaskPlugin
|
||||
from plugins.plugin_config_schema import (
|
||||
PluginConfigSchema, ConfigSection, ConfigField, FieldType
|
||||
)
|
||||
|
||||
def get_config_schema() -> PluginConfigSchema:
|
||||
schema = PluginConfigSchema("my_scheduled_plugin")
|
||||
schema.add_section(ConfigSection(
|
||||
name="basic",
|
||||
label="基本设置",
|
||||
fields=[
|
||||
ConfigField(name="cron", label="执行周期", field_type=FieldType.CRON, default="*/5 * * * *"),
|
||||
ConfigField(name="enabled", label="启用", field_type=FieldType.BOOLEAN, default=False)
|
||||
]
|
||||
))
|
||||
return schema
|
||||
|
||||
class MyScheduledPlugin(ScheduledTaskPlugin):
|
||||
plugin_name = "my_scheduled_plugin"
|
||||
plugin_version = "1.0.0"
|
||||
plugin_description = "定时任务插件"
|
||||
plugin_author = "开发者"
|
||||
config_schema = staticmethod(get_config_schema)
|
||||
|
||||
def get_cron_expression(self) -> str:
|
||||
return self.cron_expression
|
||||
|
||||
def should_run_and_get_next(self) -> tuple:
|
||||
return True, None
|
||||
|
||||
def run_task(self) -> dict:
|
||||
self.notify_success("任务完成", "执行成功")
|
||||
return {"success": True}
|
||||
```
|
||||
|
||||
## 通知功能
|
||||
|
||||
所有继承 `ScheduledTaskPlugin` 的插件可以使用通知:
|
||||
|
||||
```python
|
||||
self.notify("标题", "消息", "info")
|
||||
self.notify_error("错误", "错误详情")
|
||||
self.notify_warning("警告", "警告内容")
|
||||
self.notify_success("成功", "成功详情")
|
||||
```
|
||||
|
||||
## 表单化配置
|
||||
|
||||
```python
|
||||
from plugins.plugin_config_schema import (
|
||||
PluginConfigSchema, ConfigSection, ConfigField, FieldType
|
||||
)
|
||||
|
||||
def get_config_schema() -> PluginConfigSchema:
|
||||
schema = PluginConfigSchema("my_plugin")
|
||||
|
||||
schema.add_section(ConfigSection(
|
||||
name="basic",
|
||||
label="基本设置",
|
||||
fields=[
|
||||
ConfigField(name="key", label="键", field_type=FieldType.STRING, required=True),
|
||||
ConfigField(name="timeout", label="超时", field_type=FieldType.NUMBER, default=15),
|
||||
ConfigField(name="enabled", label="启用", field_type=FieldType.BOOLEAN, default=False)
|
||||
]
|
||||
))
|
||||
|
||||
return schema
|
||||
```
|
||||
|
||||
## 字段类型
|
||||
|
||||
| 类型 | 说明 |
|
||||
|------|------|
|
||||
| `STRING` | 文本输入 |
|
||||
| `PASSWORD` | 密码输入 |
|
||||
| `NUMBER` | 数字输入 |
|
||||
| `BOOLEAN` | 开关 |
|
||||
| `SELECT` | 下拉选择 |
|
||||
| `TEXTAREA` | 多行文本 |
|
||||
| `CRON` | Cron表达式 |
|
||||
|
||||
更多信息请参阅 [插件开发指南](../doc/wxauto_center/PLUGIN.md)
|
||||
@@ -0,0 +1,15 @@
|
||||
from plugins.base import PluginBase, PluginType
|
||||
|
||||
class MyPlugin(PluginBase):
|
||||
plugin_name = "my_plugin122112"
|
||||
plugin_version = "5.0.0"
|
||||
plugin_type = PluginType.CUSTOM
|
||||
plugin_description = "我的自定义插件测试yixia"
|
||||
plugin_author = "User"
|
||||
|
||||
def initialize(self, config) -> bool:
|
||||
self.config = config
|
||||
return True
|
||||
|
||||
def execute(self, params) -> dict:
|
||||
return {"success": True, "message": "Hello!"}
|
||||
@@ -0,0 +1,24 @@
|
||||
# ///
|
||||
# sample_plugin.py
|
||||
# 描述:示例自定义插件
|
||||
# ///
|
||||
|
||||
from plugins.base import PluginBase, PluginType
|
||||
|
||||
class SamplePlugin(PluginBase):
|
||||
plugin_name = "sample_plugin"
|
||||
plugin_version = "1.0.0"
|
||||
plugin_type = PluginType.CUSTOM
|
||||
plugin_description = "示例自定义插件"
|
||||
plugin_author = "User"
|
||||
|
||||
def initialize(self, config) -> bool:
|
||||
self.config = config
|
||||
return True
|
||||
|
||||
def execute(self, params) -> dict:
|
||||
return {
|
||||
"success": True,
|
||||
"message": "Sample plugin executed!",
|
||||
"params": params
|
||||
}
|
||||
Reference in New Issue
Block a user