import type { OpenClawPluginApi } from "openclaw/plugin-sdk"; import { hasQiaoqiaoToolEnabledForAnyAccount, withQiaoqiaoToolClient } from "../tools-common/tool-exec.js"; import { runToolWithExecutionLog } from "../tools-common/tool-execution-log.js"; import { errorResult, json } from "../tools-common/qiaoqiao-api.js"; import { registeredTool, skippedTool, type QiaoqiaoToolRegistrationResult, } from "../tools-common/tool-registration-log.js"; import { runDmAction } from "./actions.js"; import { QiaoqiaoDmSchema, type QiaoqiaoDmParams } from "./schemas.js"; export function registerQiaoqiaoDmTools(api: OpenClawPluginApi): QiaoqiaoToolRegistrationResult { if (!api.config) { return skippedTool(api, "qiaoqiao_dm", "no config available"); } if (!hasQiaoqiaoToolEnabledForAnyAccount(api.config, "dm")) { return skippedTool(api, "qiaoqiao_dm", "dm tool disabled or no enabled/configured account"); } api.registerTool( { name: "qiaoqiao_dm", label: "Qiaoqiao DM", description: "Manage Qiaoqiao direct messages. Actions: list_conversations, list_unreplied, send, send_by_qiaoqiao_id, list_messages.", parameters: QiaoqiaoDmSchema, async execute(_toolCallId, params) { return runToolWithExecutionLog({ api, toolName: "qiaoqiao_dm", params, run: async () => { try { return await withQiaoqiaoToolClient({ api, toolName: "qiaoqiao_dm", requiredTool: "dm", run: async ({ account }) => json(await runDmAction(account, params as QiaoqiaoDmParams)), }); } catch (err) { return errorResult(err); } }, }); }, }, { name: "qiaoqiao_dm" }, ); return registeredTool(api, "qiaoqiao_dm"); }