@qihoo/tuitui-openclaw-channel 1.0.39 → 1.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/openclaw.plugin.json +1 -0
- package/dist/package.json +2 -2
- package/dist/src/tools.js +27 -0
- package/dist/src/tools.js.map +1 -1
- package/openclaw.plugin.json +1 -0
- package/package.json +4 -3
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qihoo/tuitui-openclaw-channel",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.41",
|
|
4
4
|
"maintainers": [
|
|
5
5
|
{
|
|
6
6
|
"name": "huzunjie",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"typescript": "^5.7.0"
|
|
41
41
|
},
|
|
42
42
|
"openclaw": {
|
|
43
|
-
"extensions": ["./index.ts"],
|
|
43
|
+
"extensions": ["./dist/index.ts"],
|
|
44
44
|
"runtimeExtensions": ["./dist/index.js"],
|
|
45
45
|
"install": {
|
|
46
46
|
"npmSpec": "@qihoo/tuitui-openclaw-channel",
|
package/dist/src/tools.js
CHANGED
|
@@ -141,6 +141,32 @@ const tuitui_file_space_add_factory = (ctx) => {
|
|
|
141
141
|
},
|
|
142
142
|
};
|
|
143
143
|
};
|
|
144
|
+
const tuitui_im_send_message_factory = (ctx) => {
|
|
145
|
+
return {
|
|
146
|
+
name: "tuitui_im_send_message",
|
|
147
|
+
label: "tuitui_im_send_message",
|
|
148
|
+
description: "推推(tuitui) 发送消息,支持私聊和群聊",
|
|
149
|
+
parameters: Type.Object({
|
|
150
|
+
chatId: Type.String({ description: "目标会话 ID。私聊填用户账号(英文),群聊填群ID(数字)" }),
|
|
151
|
+
content: Type.String({ description: "消息正文,markdown 格式" }),
|
|
152
|
+
chatType: Type.Optional(Type.String({ description: `会话类型:${CHAT_TYPE_DIRECT}(私聊)或 ${CHAT_TYPE_GROUP}(群聊),留空则根据 chatId 自动推断` })),
|
|
153
|
+
}),
|
|
154
|
+
execute: async (_toolCallId, params) => {
|
|
155
|
+
console.log(`tuitui_im_send_message(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);
|
|
156
|
+
const account = resolveAccount(ctx.config, ctx.agentAccountId);
|
|
157
|
+
if (!account || !account.enabled || !account.appId || !account.appSecret) {
|
|
158
|
+
return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);
|
|
159
|
+
}
|
|
160
|
+
const { chatId, content, chatType } = params;
|
|
161
|
+
const resolvedChatType = chatType ?? guessChatType(chatId);
|
|
162
|
+
if (resolvedChatType === CHAT_TYPE_CHANNEL) {
|
|
163
|
+
return tool_errmsg(`tuitui_im_send_message 不支持 channel 类型,请使用 tuitui_send_channel_post`);
|
|
164
|
+
}
|
|
165
|
+
await sendTextMsg(account, chatId, resolvedChatType, content, 'tuitui.im.send_message');
|
|
166
|
+
return { success: true };
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
};
|
|
144
170
|
export function registerTuituiTools(api) {
|
|
145
171
|
if (!api.config) {
|
|
146
172
|
api.logger.debug?.("tuitui: Registered tool: No config available");
|
|
@@ -158,6 +184,7 @@ export function registerTuituiTools(api) {
|
|
|
158
184
|
api.registerTool(tuitui_get_announcement_factory);
|
|
159
185
|
api.registerTool(tuitui_file_space_list_factory);
|
|
160
186
|
api.registerTool(tuitui_file_space_add_factory);
|
|
187
|
+
api.registerTool(tuitui_im_send_message_factory);
|
|
161
188
|
api.logger.info?.(`tuitui: Registered tools`);
|
|
162
189
|
}
|
|
163
190
|
//# sourceMappingURL=tools.js.map
|
package/dist/src/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OpenClawPluginApi } from \"openclaw/plugin-sdk/core\";\nimport type { OpenClawPluginToolContext } from \"openclaw/plugin-sdk/core\";\nimport { resolveAccount } from \"./accounts\"\nimport { Type } from \"@sinclair/typebox\";\nimport { CHANNEL_ID } from './const';\nimport {sendTextMsg} from \"./outbound\"\nimport { teams_get_announcement } from \"./teams_api\"\nimport {CHAT_TYPE_DIRECT,CHAT_TYPE_GROUP,CHAT_TYPE_CHANNEL,guessChatType, teamsBuildChatId} from \"./chat_base\"\nimport {getChatRecord, getChannelInfoById} from \"./chat_record\"\nimport {file_space_list, file_space_add} from \"./filespace\"\n \nfunction tool_errmsg(str:string) {\n throw new Error(str);\n}\n\nconst tuitui_im_get_messages_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_im_get_messages\",\n label: \"tuitui_im_get_messages\",\n description: \"推推(tuitui) 聊天记录获取,可查询私聊、群聊、频道的聊天记录\\n\\n\",\n parameters: Type.Object({\n chatId: Type.String({ description: \"聊天ID,单聊指tuitui用户的account,群聊是群ID,频道指频道ID\" }),\n chatType: Type.String({ description: `聊天类型。 单聊:${CHAT_TYPE_DIRECT} 群聊:${CHAT_TYPE_GROUP} 频道:${CHAT_TYPE_CHANNEL}`}),\n relativeTime: Type.Optional(Type.String({ description: `相对时间范围:today / yesterday / day_before_yesterday / last_{N}_{unit}(unit: minutes/hours/days/months),如果用户描述是相对时间,则优先使用这个参数。与 startTime/endTime 互斥`})),\n startTime: Type.Optional(Type.String({ description: `起始时间(ISO 8601 格式,如 2026-02-27T00:00:00+08:00),非必填,默认指2000年。与 relativeTime 互斥`})),\n endTime: Type.Optional(Type.String({ description: `结束时间(ISO 8601 格式,如 2026-02-27T00:00:00+08:00),非必填,默认为now。与 relativeTime 互斥`})),\n limit: Type.Optional(Type.Number({ description: `每页条数,1~100,默认 100`})),\n cursor: Type.Optional(Type.String({ description: `游标首次调用填 \"0\",返回结果中has_more为true时代表可以获取下一页,如果你需要下一页,可以传返回结果的cursor代表继续拉取下一页, 带有cursor时,必须要有relativeTime或者startTime参数`})),\n orderAsc: Type.Optional(Type.Boolean({ description: `返回数据是否按时间正序排序,默认 false(按时间逆序,即从最新的开始拉取)`})),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_im_get_messages(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n \n const chatType = params?.chatType || \"\";\n const chatId = params?.chatId || \"\";\n if(!chatId || !chatType) {\n return tool_errmsg(`chatType or chatId empty`);\n }\n\n if(chatType == CHAT_TYPE_DIRECT || chatType == CHAT_TYPE_GROUP || chatType == CHAT_TYPE_CHANNEL) {\n return await getChatRecord(account, chatId, chatType, {\n startTime: params?.startTime,\n endTime: params?.endTime,\n relativeTime: params?.relativeTime,\n limit: params?.limit,\n cursor: params?.cursor,\n orderAsc: params?.orderAsc,\n });\n } else {\n return tool_errmsg(`unknown chatType: ${chatType}`);\n }\n },\n };\n};\n\n\nconst tuitui_send_channel_post_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_send_channel_post\",\n label: \"tuitui_send_channel_post\",\n description: \"推推(tuitui) 发送团队频道的帖子,帖子内容是markdown格式\\n\\n\",\n parameters: Type.Object({\n channel_id: Type.String({ description: \"推推频道ID\" }),\n markdown: Type.String({ description: `帖子正文,markdown格式`}),\n parent_id: Type.Optional(Type.String({ description: `如果要回复一个帖子,需要填写这个字段为被回复的帖子ID`})),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_send_channel_post(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n\n let chatId = \"\";\n const guessType = guessChatType(params?.channel_id);\n if(guessType == CHAT_TYPE_CHANNEL) {\n // 解决badcase: 发个帖子,内容是个笑话\n // 如果用户没明确说频道ID,大模型在频道调用发帖tool会传sessionKey过来\n chatId = params?.channel_id;\n } else {\n const channel_info = await getChannelInfoById(account, params?.channel_id);\n const team_id = channel_info?.team_id;\n chatId = teamsBuildChatId(team_id, params?.channel_id, params?.parent_id);\n }\n\n const result: Promise<any> = sendTextMsg(account, chatId, CHAT_TYPE_CHANNEL, params?.markdown);\n return result;\n },\n };\n};\n\n\nconst tuitui_get_announcement_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_get_announcement\",\n label: \"tuitui_get_announcement\",\n description: \"获取推推(tuitui) 当前会话的公告信息\\n\\n\",\n parameters: Type.Object({\n // 参数不能为空,对模型兼容有问题,即使不用也要传一个\n reason: Type.String({ description: \"调用本工具的原因\" }),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_get_announcement(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n return await teams_get_announcement(account, ctx.sessionKey);\n },\n };\n};\n\n\n\n\nconst tuitui_file_space_list_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_file_space_list\",\n label: \"tuitui_file_space_list\",\n description: \"推推(tuitui) 在当前Session的共享文件(共享空间)文件列表\\n\\n\",\n parameters: Type.Object({\n // 参数不能为空,对模型兼容有问题,即使不用也要传一个\n reason: Type.String({ description: \"调用本工具的原因\" }),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_file_space_list(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n return await file_space_list(account, ctx.sessionKey||\"\");\n },\n };\n};\n\nconst tuitui_file_space_add_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_file_space_add\",\n label: \"tuitui_file_space_add\",\n description: \"推推(tuitui) 团队频道的共享文件(共享空间)添加文件\\n\\n\",\n parameters: Type.Object({\n cloud_filepath: Type.String({ description: \"云端文件名路径,父目录不存在会自动创建。不含目录代表放根目录示例 1.png ,也支持带目录写法例如 /image/1.png\" }),\n url_or_localpath: Type.String({ description: \"支持两种格式:以http开头的文件url;或者本地全路径文件名\" }),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_file_space_add(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n return await file_space_add(account, ctx.sessionKey||\"\", params?.cloud_filepath, params?.url_or_localpath);\n },\n };\n};\n\n\nexport function registerTuituiTools(api: OpenClawPluginApi) {\n if (!api.config) {\n api.logger.debug?.(\"tuitui: Registered tool: No config available\");\n return;\n }\n\n const channels = api.config.channels || {};\n const currChannel = channels[CHANNEL_ID] || {};\n if (!currChannel?.appId && !currChannel?.accounts) {\n // 无推推配置时,不需要注册工具防止污染上下文\n // api.logger.info?.(`tuitui: ignore Registered tools`);\n return\n }\n \n api.registerTool(tuitui_im_get_messages_factory);\n api.registerTool(tuitui_send_channel_post_factory);\n api.registerTool(tuitui_get_announcement_factory);\n api.registerTool(tuitui_file_space_list_factory);\n api.registerTool(tuitui_file_space_add_factory);\n api.logger.info?.(`tuitui: Registered tools`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OpenClawPluginApi } from \"openclaw/plugin-sdk/core\";\nimport type { OpenClawPluginToolContext } from \"openclaw/plugin-sdk/core\";\nimport { resolveAccount } from \"./accounts\"\nimport { Type } from \"@sinclair/typebox\";\nimport { CHANNEL_ID } from './const';\nimport {sendTextMsg} from \"./outbound\"\nimport { teams_get_announcement } from \"./teams_api\"\nimport {CHAT_TYPE_DIRECT,CHAT_TYPE_GROUP,CHAT_TYPE_CHANNEL,guessChatType, teamsBuildChatId} from \"./chat_base\"\nimport {getChatRecord, getChannelInfoById} from \"./chat_record\"\nimport {file_space_list, file_space_add} from \"./filespace\"\n \nfunction tool_errmsg(str:string) {\n throw new Error(str);\n}\n\nconst tuitui_im_get_messages_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_im_get_messages\",\n label: \"tuitui_im_get_messages\",\n description: \"推推(tuitui) 聊天记录获取,可查询私聊、群聊、频道的聊天记录\\n\\n\",\n parameters: Type.Object({\n chatId: Type.String({ description: \"聊天ID,单聊指tuitui用户的account,群聊是群ID,频道指频道ID\" }),\n chatType: Type.String({ description: `聊天类型。 单聊:${CHAT_TYPE_DIRECT} 群聊:${CHAT_TYPE_GROUP} 频道:${CHAT_TYPE_CHANNEL}`}),\n relativeTime: Type.Optional(Type.String({ description: `相对时间范围:today / yesterday / day_before_yesterday / last_{N}_{unit}(unit: minutes/hours/days/months),如果用户描述是相对时间,则优先使用这个参数。与 startTime/endTime 互斥`})),\n startTime: Type.Optional(Type.String({ description: `起始时间(ISO 8601 格式,如 2026-02-27T00:00:00+08:00),非必填,默认指2000年。与 relativeTime 互斥`})),\n endTime: Type.Optional(Type.String({ description: `结束时间(ISO 8601 格式,如 2026-02-27T00:00:00+08:00),非必填,默认为now。与 relativeTime 互斥`})),\n limit: Type.Optional(Type.Number({ description: `每页条数,1~100,默认 100`})),\n cursor: Type.Optional(Type.String({ description: `游标首次调用填 \"0\",返回结果中has_more为true时代表可以获取下一页,如果你需要下一页,可以传返回结果的cursor代表继续拉取下一页, 带有cursor时,必须要有relativeTime或者startTime参数`})),\n orderAsc: Type.Optional(Type.Boolean({ description: `返回数据是否按时间正序排序,默认 false(按时间逆序,即从最新的开始拉取)`})),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_im_get_messages(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n \n const chatType = params?.chatType || \"\";\n const chatId = params?.chatId || \"\";\n if(!chatId || !chatType) {\n return tool_errmsg(`chatType or chatId empty`);\n }\n\n if(chatType == CHAT_TYPE_DIRECT || chatType == CHAT_TYPE_GROUP || chatType == CHAT_TYPE_CHANNEL) {\n return await getChatRecord(account, chatId, chatType, {\n startTime: params?.startTime,\n endTime: params?.endTime,\n relativeTime: params?.relativeTime,\n limit: params?.limit,\n cursor: params?.cursor,\n orderAsc: params?.orderAsc,\n });\n } else {\n return tool_errmsg(`unknown chatType: ${chatType}`);\n }\n },\n };\n};\n\n\nconst tuitui_send_channel_post_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_send_channel_post\",\n label: \"tuitui_send_channel_post\",\n description: \"推推(tuitui) 发送团队频道的帖子,帖子内容是markdown格式\\n\\n\",\n parameters: Type.Object({\n channel_id: Type.String({ description: \"推推频道ID\" }),\n markdown: Type.String({ description: `帖子正文,markdown格式`}),\n parent_id: Type.Optional(Type.String({ description: `如果要回复一个帖子,需要填写这个字段为被回复的帖子ID`})),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_send_channel_post(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n\n let chatId = \"\";\n const guessType = guessChatType(params?.channel_id);\n if(guessType == CHAT_TYPE_CHANNEL) {\n // 解决badcase: 发个帖子,内容是个笑话\n // 如果用户没明确说频道ID,大模型在频道调用发帖tool会传sessionKey过来\n chatId = params?.channel_id;\n } else {\n const channel_info = await getChannelInfoById(account, params?.channel_id);\n const team_id = channel_info?.team_id;\n chatId = teamsBuildChatId(team_id, params?.channel_id, params?.parent_id);\n }\n\n const result: Promise<any> = sendTextMsg(account, chatId, CHAT_TYPE_CHANNEL, params?.markdown);\n return result;\n },\n };\n};\n\n\nconst tuitui_get_announcement_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_get_announcement\",\n label: \"tuitui_get_announcement\",\n description: \"获取推推(tuitui) 当前会话的公告信息\\n\\n\",\n parameters: Type.Object({\n // 参数不能为空,对模型兼容有问题,即使不用也要传一个\n reason: Type.String({ description: \"调用本工具的原因\" }),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_get_announcement(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n return await teams_get_announcement(account, ctx.sessionKey);\n },\n };\n};\n\n\n\n\nconst tuitui_file_space_list_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_file_space_list\",\n label: \"tuitui_file_space_list\",\n description: \"推推(tuitui) 在当前Session的共享文件(共享空间)文件列表\\n\\n\",\n parameters: Type.Object({\n // 参数不能为空,对模型兼容有问题,即使不用也要传一个\n reason: Type.String({ description: \"调用本工具的原因\" }),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_file_space_list(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n return await file_space_list(account, ctx.sessionKey||\"\");\n },\n };\n};\n\nconst tuitui_file_space_add_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_file_space_add\",\n label: \"tuitui_file_space_add\",\n description: \"推推(tuitui) 团队频道的共享文件(共享空间)添加文件\\n\\n\",\n parameters: Type.Object({\n cloud_filepath: Type.String({ description: \"云端文件名路径,父目录不存在会自动创建。不含目录代表放根目录示例 1.png ,也支持带目录写法例如 /image/1.png\" }),\n url_or_localpath: Type.String({ description: \"支持两种格式:以http开头的文件url;或者本地全路径文件名\" }),\n }),\n execute: async (_toolCallId: any, params: any) => {\n console.log(`tuitui_file_space_add(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if(!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n return await file_space_add(account, ctx.sessionKey||\"\", params?.cloud_filepath, params?.url_or_localpath);\n },\n };\n};\n\n\nconst tuitui_im_send_message_factory = (ctx: OpenClawPluginToolContext) => {\n return {\n name: \"tuitui_im_send_message\",\n label: \"tuitui_im_send_message\",\n description: \"推推(tuitui) 发送消息,支持私聊和群聊\",\n parameters: Type.Object({\n chatId: Type.String({ description: \"目标会话 ID。私聊填用户账号(英文),群聊填群ID(数字)\" }),\n content: Type.String({ description: \"消息正文,markdown 格式\" }),\n chatType: Type.Optional(Type.String({ description: `会话类型:${CHAT_TYPE_DIRECT}(私聊)或 ${CHAT_TYPE_GROUP}(群聊),留空则根据 chatId 自动推断` })),\n }),\n execute: async (_toolCallId: any, params: any): Promise<any> => {\n console.log(`tuitui_im_send_message(): agentAccountId: ${ctx.agentAccountId}, sessionKey: ${ctx.sessionKey}`, params);\n const account = resolveAccount(ctx.config, ctx.agentAccountId);\n if (!account || !account.enabled || !account.appId || !account.appSecret) {\n return tool_errmsg(`invalid tuitui account ${ctx.agentAccountId}`);\n }\n const { chatId, content, chatType } = params;\n const resolvedChatType = chatType ?? guessChatType(chatId);\n if (resolvedChatType === CHAT_TYPE_CHANNEL) {\n return tool_errmsg(`tuitui_im_send_message 不支持 channel 类型,请使用 tuitui_send_channel_post`);\n }\n await sendTextMsg(account, chatId, resolvedChatType, content, 'tuitui.im.send_message');\n return { success: true };\n },\n };\n};\n\n\nexport function registerTuituiTools(api: OpenClawPluginApi) {\n if (!api.config) {\n api.logger.debug?.(\"tuitui: Registered tool: No config available\");\n return;\n }\n\n const channels = api.config.channels || {};\n const currChannel = channels[CHANNEL_ID] || {};\n if (!currChannel?.appId && !currChannel?.accounts) {\n // 无推推配置时,不需要注册工具防止污染上下文\n // api.logger.info?.(`tuitui: ignore Registered tools`);\n return\n }\n \n api.registerTool(tuitui_im_get_messages_factory);\n api.registerTool(tuitui_send_channel_post_factory);\n api.registerTool(tuitui_get_announcement_factory);\n api.registerTool(tuitui_file_space_list_factory);\n api.registerTool(tuitui_file_space_add_factory);\n api.registerTool(tuitui_im_send_message_factory);\n api.logger.info?.(`tuitui: Registered tools`);\n}\n"]}
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qihoo/tuitui-openclaw-channel",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.41",
|
|
4
4
|
"maintainers": [
|
|
5
5
|
{
|
|
6
6
|
"name": "huzunjie",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"description": "TuiTui channel plugin for OpenClaw",
|
|
19
19
|
"type": "module",
|
|
20
20
|
"scripts": {
|
|
21
|
-
"build": "tsc"
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
22
23
|
},
|
|
23
24
|
"files": [
|
|
24
25
|
"dist",
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
"typescript": "^5.7.0"
|
|
40
41
|
},
|
|
41
42
|
"openclaw": {
|
|
42
|
-
"extensions": ["./dist/index.
|
|
43
|
+
"extensions": ["./dist/index.ts"],
|
|
43
44
|
"runtimeExtensions": ["./dist/index.js"],
|
|
44
45
|
"install": {
|
|
45
46
|
"npmSpec": "@qihoo/tuitui-openclaw-channel",
|