chore: initialize

This commit is contained in:
Soulter
2025-11-11 00:23:48 +08:00
commit bba9b721fd
68 changed files with 6052 additions and 0 deletions

View 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!")

View 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!")

View 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 类型

View File

View 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: 监听并记录所有消息