mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 17:47:06 +08:00
chore: initialize
This commit is contained in:
12
dev/plugin_sample/handlers/commands/hello.py
Normal file
12
dev/plugin_sample/handlers/commands/hello.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from astrbot.api.v1.components.command import CommandComponent
|
||||
from astrbot.api.v1.event import AstrMessageEvent, filter
|
||||
from astrbot.api.v1.context import Context
|
||||
|
||||
|
||||
class HelloCommand(CommandComponent):
|
||||
def __init__(self, context: Context):
|
||||
super().__init__(context)
|
||||
|
||||
@filter.command("hello")
|
||||
async def hello(self, event: AstrMessageEvent):
|
||||
yield event.plain_result("Hello, Astrbot!")
|
||||
12
dev/plugin_sample/handlers/listeners/echo.py
Normal file
12
dev/plugin_sample/handlers/listeners/echo.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from astrbot.api.v1.components.listener import ListenerComponent
|
||||
from astrbot.api.v1.event import AstrMessageEvent, filter
|
||||
from astrbot.api.v1.context import Context
|
||||
|
||||
|
||||
class EchoListener(ListenerComponent):
|
||||
def __init__(self, context: Context):
|
||||
super().__init__(context)
|
||||
|
||||
@filter.platform_adapter_type(filter.PlatformAdapterType.ALL)
|
||||
async def on_message(self, event: AstrMessageEvent):
|
||||
yield event.plain_result("Hello, Astrbot!")
|
||||
31
dev/plugin_sample/handlers/tools/hello.py
Normal file
31
dev/plugin_sample/handlers/tools/hello.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from mcp.types import CallToolResult
|
||||
from pydantic import Field
|
||||
from pydantic.dataclasses import dataclass
|
||||
|
||||
from astrbot.api.v1.components.agent.tool import FunctionTool
|
||||
from astrbot.api.v1.components.agent import ContextWrapper, AstrAgentContext
|
||||
|
||||
|
||||
@dataclass
|
||||
class HelloWorldTool(FunctionTool):
|
||||
name: str = "hello_world" # 工具名称
|
||||
description: str = "Say hello to the world." # 工具描述
|
||||
parameters: dict = Field(
|
||||
default_factory=lambda: {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"greeting": {
|
||||
"type": "string",
|
||||
"description": "The greeting message.",
|
||||
},
|
||||
},
|
||||
"required": ["greeting"],
|
||||
}
|
||||
) # 工具参数定义,见 OpenAI 官网或 https://json-schema.org/understanding-json-schema/
|
||||
|
||||
async def call(
|
||||
self, context: ContextWrapper[AstrAgentContext], **kwargs
|
||||
) -> str | CallToolResult:
|
||||
# event 在 context.context.event 中可用
|
||||
greeting = kwargs.get("greeting", "Hello")
|
||||
return f"{greeting}, World!" # 也支持 mcp.types.CallToolResult 类型
|
||||
0
dev/plugin_sample/icon.png
Normal file
0
dev/plugin_sample/icon.png
Normal file
22
dev/plugin_sample/plugin.yaml
Normal file
22
dev/plugin_sample/plugin.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
_schema_version: 2
|
||||
name: astrbot_plugin_helloworld
|
||||
display_name: HelloWorld 插件
|
||||
desc: 一个简单的问候插件示例
|
||||
author: Soulter
|
||||
version: 0.1.0
|
||||
components: # 组件列表,将支持自动生成
|
||||
- class: plugin_sample.commands.hello:HelloCommand
|
||||
type: command
|
||||
name: hello
|
||||
description: 发送问候消息
|
||||
subcommands:
|
||||
- name: wow
|
||||
description: 发送 "Hello, Astrbot!" 消息
|
||||
- class: plugin_sample.tools.echo:EchoTool
|
||||
type: llm_tool
|
||||
name: echo_tool
|
||||
description: 回显输入的消息
|
||||
- class: plugin_sample.listeners.message_listener:MessageListener
|
||||
type: listener
|
||||
name: message_logger
|
||||
description: 监听并记录所有消息
|
||||
Reference in New Issue
Block a user