feat:重写了hello_world
This commit is contained in:
19
plugins/hello_world_plugin/_manifest.json
Normal file
19
plugins/hello_world_plugin/_manifest.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"manifest_version": 1,
|
||||||
|
"name": "Hello World 插件",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"description": "一个包含四大核心组件和高级配置功能的入门示例插件。",
|
||||||
|
"author": {
|
||||||
|
"name": "Kilo Code"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"keywords": [
|
||||||
|
"example",
|
||||||
|
"tutorial",
|
||||||
|
"hello world"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"official",
|
||||||
|
"example"
|
||||||
|
]
|
||||||
|
}
|
||||||
130
plugins/hello_world_plugin/plugin.py
Normal file
130
plugins/hello_world_plugin/plugin.py
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
from typing import List, Tuple, Type, Dict, Any, Optional
|
||||||
|
import logging
|
||||||
|
import random
|
||||||
|
|
||||||
|
from src.plugin_system import (
|
||||||
|
BasePlugin,
|
||||||
|
register_plugin,
|
||||||
|
ComponentInfo,
|
||||||
|
BaseEventHandler,
|
||||||
|
EventType,
|
||||||
|
BaseTool,
|
||||||
|
ToolParamType,
|
||||||
|
PlusCommand,
|
||||||
|
CommandArgs,
|
||||||
|
ChatType,
|
||||||
|
BaseAction,
|
||||||
|
ActionActivationType,
|
||||||
|
ConfigField,
|
||||||
|
)
|
||||||
|
from src.plugin_system.base.base_event import HandlerResult
|
||||||
|
|
||||||
|
|
||||||
|
class StartupMessageHandler(BaseEventHandler):
|
||||||
|
"""启动时打印消息的事件处理器。"""
|
||||||
|
|
||||||
|
handler_name = "hello_world_startup_handler"
|
||||||
|
handler_description = "在机器人启动时打印一条日志。"
|
||||||
|
init_subscribe = [EventType.ON_START]
|
||||||
|
|
||||||
|
async def execute(self, params: dict) -> HandlerResult:
|
||||||
|
logging.info("🎉 Hello World 插件已启动,准备就绪!")
|
||||||
|
return HandlerResult(success=True, continue_process=True)
|
||||||
|
|
||||||
|
|
||||||
|
class GetSystemInfoTool(BaseTool):
|
||||||
|
"""一个提供系统信息的示例工具。"""
|
||||||
|
|
||||||
|
name = "get_system_info"
|
||||||
|
description = "获取当前系统的模拟版本和状态信息。"
|
||||||
|
available_for_llm = True
|
||||||
|
parameters = []
|
||||||
|
|
||||||
|
async def execute(self, function_args: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
|
return {"name": self.name, "content": "系统版本: 1.0.1, 状态: 运行正常"}
|
||||||
|
|
||||||
|
|
||||||
|
class HelloCommand(PlusCommand):
|
||||||
|
"""一个简单的 /hello 命令,使用配置文件中的问候语。"""
|
||||||
|
|
||||||
|
command_name = "hello"
|
||||||
|
command_description = "向机器人发送一个简单的问候。"
|
||||||
|
command_aliases = ["hi", "你好"]
|
||||||
|
chat_type_allow = ChatType.ALL
|
||||||
|
|
||||||
|
async def execute(self, args: CommandArgs) -> Tuple[bool, Optional[str], bool]:
|
||||||
|
greeting = str(self.get_config("greeting.message", "Hello, World! 我是一个由 MoFox_Bot 驱动的插件。"))
|
||||||
|
await self.send_text(greeting)
|
||||||
|
return True, "成功发送问候", True
|
||||||
|
|
||||||
|
|
||||||
|
class RandomEmojiAction(BaseAction):
|
||||||
|
"""一个随机发送表情的动作。"""
|
||||||
|
|
||||||
|
action_name = "random_emoji"
|
||||||
|
action_description = "随机发送一个表情符号,增加聊天的趣味性。"
|
||||||
|
activation_type = ActionActivationType.RANDOM
|
||||||
|
random_activation_probability = 0.1
|
||||||
|
action_require = ["当对话气氛轻松时", "可以用来回应简单的情感表达"]
|
||||||
|
associated_types = ["text"]
|
||||||
|
|
||||||
|
async def execute(self) -> Tuple[bool, str]:
|
||||||
|
emojis = ["😊", "😂", "👍", "🎉", "🤔", "🤖"]
|
||||||
|
await self.send_text(random.choice(emojis))
|
||||||
|
return True, "成功发送了一个随机表情"
|
||||||
|
|
||||||
|
|
||||||
|
@register_plugin
|
||||||
|
class HelloWorldPlugin(BasePlugin):
|
||||||
|
"""一个包含四大核心组件和高级配置功能的入门示例插件。"""
|
||||||
|
|
||||||
|
plugin_name = "hello_world_plugin"
|
||||||
|
enable_plugin = True
|
||||||
|
dependencies = []
|
||||||
|
python_dependencies = []
|
||||||
|
config_file_name = "config.toml"
|
||||||
|
enable_plugin = False
|
||||||
|
|
||||||
|
config_schema = {
|
||||||
|
"meta": {
|
||||||
|
"config_version": ConfigField(
|
||||||
|
type=int,
|
||||||
|
default=1,
|
||||||
|
description="配置文件版本,请勿手动修改。"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
"greeting": {
|
||||||
|
"message": ConfigField(
|
||||||
|
type=str,
|
||||||
|
default="这是来自配置文件的问候!👋",
|
||||||
|
description="HelloCommand 使用的问候语。"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"hello_command_enabled": ConfigField(
|
||||||
|
type=bool,
|
||||||
|
default=True,
|
||||||
|
description="是否启用 /hello 命令。"
|
||||||
|
),
|
||||||
|
"random_emoji_action_enabled": ConfigField(
|
||||||
|
type=bool,
|
||||||
|
default=True,
|
||||||
|
description="是否启用随机表情动作。"
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_plugin_components(self) -> List[Tuple[ComponentInfo, Type]]:
|
||||||
|
"""根据配置文件动态注册插件的功能组件。"""
|
||||||
|
components: List[Tuple[ComponentInfo, Type]] = []
|
||||||
|
|
||||||
|
components.append((StartupMessageHandler.get_handler_info(), StartupMessageHandler))
|
||||||
|
components.append((GetSystemInfoTool.get_tool_info(), GetSystemInfoTool))
|
||||||
|
|
||||||
|
if self.get_config("components.hello_command_enabled", True):
|
||||||
|
components.append((HelloCommand.get_command_info(), HelloCommand))
|
||||||
|
|
||||||
|
if self.get_config("components.random_emoji_action_enabled", True):
|
||||||
|
components.append((RandomEmojiAction.get_action_info(), RandomEmojiAction))
|
||||||
|
|
||||||
|
return components
|
||||||
Reference in New Issue
Block a user