46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
"""Generated reviewed adapter for history-search."""
|
|
|
|
from jwebot_sdk import Event, ExtensionResult, ReplyPlan, SingleGroupContext
|
|
|
|
|
|
PROFILE = 'history-search'
|
|
AUTHOR = 'jwebot'
|
|
DESCRIPTION = '搜索本地群聊文字记录'
|
|
HELP_ENTRIES = ('/查记录 关键词',)
|
|
COMMANDS = ('/查记录', '/历史搜索')
|
|
|
|
|
|
def _handler(context: SingleGroupContext, command: str):
|
|
def handle(event: Event, arguments: str) -> ExtensionResult:
|
|
response = context.services.call(
|
|
PROFILE,
|
|
operation="execute",
|
|
payload={
|
|
"command": command,
|
|
"arguments": arguments,
|
|
"event": event.to_mapping(),
|
|
},
|
|
)
|
|
texts = response.get("texts")
|
|
if isinstance(texts, list) and texts and all(
|
|
isinstance(item, str) and item.strip() for item in texts
|
|
):
|
|
return ExtensionResult(
|
|
reply=ReplyPlan.multi_text(texts),
|
|
metadata={"local_extension": PROFILE, "author": AUTHOR},
|
|
)
|
|
text = response.get("text")
|
|
if not isinstance(text, str) or not text.strip():
|
|
raise ValueError("local service returned invalid text")
|
|
return ExtensionResult(
|
|
reply=ReplyPlan.text(text),
|
|
metadata={"local_extension": PROFILE, "author": AUTHOR},
|
|
)
|
|
|
|
return handle
|
|
|
|
|
|
def plugin(context: SingleGroupContext) -> None:
|
|
for command in COMMANDS:
|
|
context.commands.register(command, _handler(context, command))
|