mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-22 20:17:39 +08:00
85 lines
1.8 KiB
Python
85 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved
|
||
|
||
@Time : 2024/7/24 上午12:02
|
||
@Author : snowykami
|
||
@Email : snowykami@outlook.com
|
||
@File : model.py
|
||
@Software: PyCharm
|
||
"""
|
||
from enum import Enum
|
||
from types import ModuleType
|
||
from typing import Any, Optional
|
||
|
||
from pydantic import BaseModel
|
||
|
||
|
||
class PluginType(Enum):
|
||
"""
|
||
插件类型枚举值
|
||
"""
|
||
APPLICATION = "application"
|
||
"""应用端:例如NoneBot"""
|
||
|
||
SERVICE = "service"
|
||
"""服务端:例如AI绘画后端"""
|
||
|
||
IMPLEMENTATION = "implementation"
|
||
"""实现端:例如与聊天平台的协议实现"""
|
||
|
||
MODULE = "module"
|
||
"""模块:导出对象给其他插件使用"""
|
||
|
||
UNCLASSIFIED = "unclassified"
|
||
"""未分类:默认值"""
|
||
|
||
|
||
class PluginMetadata(BaseModel):
|
||
"""
|
||
轻雪插件元数据,由插件编写者提供,name为必填项
|
||
Attributes:
|
||
----------
|
||
|
||
name: str
|
||
插件名称
|
||
description: str
|
||
插件描述
|
||
usage: str
|
||
插件使用方法
|
||
type: str
|
||
插件类型
|
||
author: str
|
||
插件作者
|
||
homepage: str
|
||
插件主页
|
||
extra: dict[str, Any]
|
||
额外信息
|
||
"""
|
||
name: str
|
||
description: str = ""
|
||
usage: str = ""
|
||
type: PluginType = PluginType.UNCLASSIFIED
|
||
author: str = ""
|
||
homepage: str = ""
|
||
extra: dict[str, Any] = {}
|
||
|
||
|
||
class Plugin(BaseModel):
|
||
"""
|
||
存储插件信息
|
||
"""
|
||
model_config = {
|
||
'arbitrary_types_allowed': True
|
||
}
|
||
name: str
|
||
"""插件名称 例如plugin_loader"""
|
||
module: ModuleType
|
||
"""插件模块对象"""
|
||
module_name: str
|
||
"""点分割模块路径 例如a.b.c"""
|
||
metadata: Optional[PluginMetadata] = None
|
||
|
||
def __hash__(self):
|
||
return hash(self.module_name)
|