@openclaw-cn/feishu 0.1.8

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.
Files changed (167) hide show
  1. package/README.md +86 -0
  2. package/dist/index.d.ts +37 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +49 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/accounts.d.ts +33 -0
  7. package/dist/src/accounts.d.ts.map +1 -0
  8. package/dist/src/accounts.js +110 -0
  9. package/dist/src/accounts.js.map +1 -0
  10. package/dist/src/bitable.d.ts +211 -0
  11. package/dist/src/bitable.d.ts.map +1 -0
  12. package/dist/src/bitable.js +721 -0
  13. package/dist/src/bitable.js.map +1 -0
  14. package/dist/src/bot.d.ts +53 -0
  15. package/dist/src/bot.d.ts.map +1 -0
  16. package/dist/src/bot.js +853 -0
  17. package/dist/src/bot.js.map +1 -0
  18. package/dist/src/calendar-schema.d.ts +18 -0
  19. package/dist/src/calendar-schema.d.ts.map +1 -0
  20. package/dist/src/calendar-schema.js +52 -0
  21. package/dist/src/calendar-schema.js.map +1 -0
  22. package/dist/src/calendar.d.ts +441 -0
  23. package/dist/src/calendar.d.ts.map +1 -0
  24. package/dist/src/calendar.js +257 -0
  25. package/dist/src/calendar.js.map +1 -0
  26. package/dist/src/channel.d.ts +4 -0
  27. package/dist/src/channel.d.ts.map +1 -0
  28. package/dist/src/channel.js +331 -0
  29. package/dist/src/channel.js.map +1 -0
  30. package/dist/src/client.d.ts +35 -0
  31. package/dist/src/client.d.ts.map +1 -0
  32. package/dist/src/client.js +86 -0
  33. package/dist/src/client.js.map +1 -0
  34. package/dist/src/config-schema.d.ts +176 -0
  35. package/dist/src/config-schema.d.ts.map +1 -0
  36. package/dist/src/config-schema.js +56 -0
  37. package/dist/src/config-schema.js.map +1 -0
  38. package/dist/src/directory.d.ts +36 -0
  39. package/dist/src/directory.d.ts.map +1 -0
  40. package/dist/src/directory.js +129 -0
  41. package/dist/src/directory.js.map +1 -0
  42. package/dist/src/doc-schema.d.ts +37 -0
  43. package/dist/src/doc-schema.d.ts.map +1 -0
  44. package/dist/src/doc-schema.js +51 -0
  45. package/dist/src/doc-schema.js.map +1 -0
  46. package/dist/src/docx.d.ts +3 -0
  47. package/dist/src/docx.d.ts.map +1 -0
  48. package/dist/src/docx.js +608 -0
  49. package/dist/src/docx.js.map +1 -0
  50. package/dist/src/drive-schema.d.ts +24 -0
  51. package/dist/src/drive-schema.d.ts.map +1 -0
  52. package/dist/src/drive-schema.js +39 -0
  53. package/dist/src/drive-schema.js.map +1 -0
  54. package/dist/src/drive.d.ts +3 -0
  55. package/dist/src/drive.d.ts.map +1 -0
  56. package/dist/src/drive.js +181 -0
  57. package/dist/src/drive.js.map +1 -0
  58. package/dist/src/dynamic-agent.d.ts +19 -0
  59. package/dist/src/dynamic-agent.d.ts.map +1 -0
  60. package/dist/src/dynamic-agent.js +91 -0
  61. package/dist/src/dynamic-agent.js.map +1 -0
  62. package/dist/src/im-schema.d.ts +38 -0
  63. package/dist/src/im-schema.d.ts.map +1 -0
  64. package/dist/src/im-schema.js +73 -0
  65. package/dist/src/im-schema.js.map +1 -0
  66. package/dist/src/im.d.ts +70 -0
  67. package/dist/src/im.d.ts.map +1 -0
  68. package/dist/src/im.js +328 -0
  69. package/dist/src/im.js.map +1 -0
  70. package/dist/src/media.d.ts +99 -0
  71. package/dist/src/media.d.ts.map +1 -0
  72. package/dist/src/media.js +454 -0
  73. package/dist/src/media.js.map +1 -0
  74. package/dist/src/mention.d.ts +49 -0
  75. package/dist/src/mention.d.ts.map +1 -0
  76. package/dist/src/mention.js +99 -0
  77. package/dist/src/mention.js.map +1 -0
  78. package/dist/src/monitor.d.ts +16 -0
  79. package/dist/src/monitor.d.ts.map +1 -0
  80. package/dist/src/monitor.js +288 -0
  81. package/dist/src/monitor.js.map +1 -0
  82. package/dist/src/onboarding.d.ts +3 -0
  83. package/dist/src/onboarding.d.ts.map +1 -0
  84. package/dist/src/onboarding.js +119 -0
  85. package/dist/src/onboarding.js.map +1 -0
  86. package/dist/src/outbound.d.ts +3 -0
  87. package/dist/src/outbound.d.ts.map +1 -0
  88. package/dist/src/outbound.js +53 -0
  89. package/dist/src/outbound.js.map +1 -0
  90. package/dist/src/perm-schema.d.ts +21 -0
  91. package/dist/src/perm-schema.d.ts.map +1 -0
  92. package/dist/src/perm-schema.js +47 -0
  93. package/dist/src/perm-schema.js.map +1 -0
  94. package/dist/src/perm.d.ts +14 -0
  95. package/dist/src/perm.d.ts.map +1 -0
  96. package/dist/src/perm.js +106 -0
  97. package/dist/src/perm.js.map +1 -0
  98. package/dist/src/policy.d.ts +28 -0
  99. package/dist/src/policy.d.ts.map +1 -0
  100. package/dist/src/policy.js +61 -0
  101. package/dist/src/policy.js.map +1 -0
  102. package/dist/src/probe.d.ts +4 -0
  103. package/dist/src/probe.d.ts.map +1 -0
  104. package/dist/src/probe.js +41 -0
  105. package/dist/src/probe.js.map +1 -0
  106. package/dist/src/reactions.d.ts +66 -0
  107. package/dist/src/reactions.d.ts.map +1 -0
  108. package/dist/src/reactions.js +104 -0
  109. package/dist/src/reactions.js.map +1 -0
  110. package/dist/src/reply-dispatcher.d.ts +41 -0
  111. package/dist/src/reply-dispatcher.d.ts.map +1 -0
  112. package/dist/src/reply-dispatcher.js +249 -0
  113. package/dist/src/reply-dispatcher.js.map +1 -0
  114. package/dist/src/runtime.d.ts +4 -0
  115. package/dist/src/runtime.d.ts.map +1 -0
  116. package/dist/src/runtime.js +11 -0
  117. package/dist/src/runtime.js.map +1 -0
  118. package/dist/src/send.d.ts +76 -0
  119. package/dist/src/send.d.ts.map +1 -0
  120. package/dist/src/send.js +250 -0
  121. package/dist/src/send.js.map +1 -0
  122. package/dist/src/sheets-schema.d.ts +12 -0
  123. package/dist/src/sheets-schema.d.ts.map +1 -0
  124. package/dist/src/sheets-schema.js +35 -0
  125. package/dist/src/sheets-schema.js.map +1 -0
  126. package/dist/src/sheets.d.ts +45 -0
  127. package/dist/src/sheets.d.ts.map +1 -0
  128. package/dist/src/sheets.js +197 -0
  129. package/dist/src/sheets.js.map +1 -0
  130. package/dist/src/streaming-card.d.ts +29 -0
  131. package/dist/src/streaming-card.d.ts.map +1 -0
  132. package/dist/src/streaming-card.js +192 -0
  133. package/dist/src/streaming-card.js.map +1 -0
  134. package/dist/src/targets.d.ts +7 -0
  135. package/dist/src/targets.d.ts.map +1 -0
  136. package/dist/src/targets.js +70 -0
  137. package/dist/src/targets.js.map +1 -0
  138. package/dist/src/task-schema.d.ts +19 -0
  139. package/dist/src/task-schema.d.ts.map +1 -0
  140. package/dist/src/task-schema.js +54 -0
  141. package/dist/src/task-schema.js.map +1 -0
  142. package/dist/src/task.d.ts +1193 -0
  143. package/dist/src/task.d.ts.map +1 -0
  144. package/dist/src/task.js +274 -0
  145. package/dist/src/task.js.map +1 -0
  146. package/dist/src/tools-config.d.ts +12 -0
  147. package/dist/src/tools-config.d.ts.map +1 -0
  148. package/dist/src/tools-config.js +24 -0
  149. package/dist/src/tools-config.js.map +1 -0
  150. package/dist/src/types.d.ts +74 -0
  151. package/dist/src/types.d.ts.map +1 -0
  152. package/dist/src/types.js +2 -0
  153. package/dist/src/types.js.map +1 -0
  154. package/dist/src/typing.d.ts +22 -0
  155. package/dist/src/typing.d.ts.map +1 -0
  156. package/dist/src/typing.js +60 -0
  157. package/dist/src/typing.js.map +1 -0
  158. package/dist/src/wiki-schema.d.ts +34 -0
  159. package/dist/src/wiki-schema.d.ts.map +1 -0
  160. package/dist/src/wiki-schema.js +43 -0
  161. package/dist/src/wiki-schema.js.map +1 -0
  162. package/dist/src/wiki.d.ts +3 -0
  163. package/dist/src/wiki.d.ts.map +1 -0
  164. package/dist/src/wiki.js +176 -0
  165. package/dist/src/wiki.js.map +1 -0
  166. package/openclaw.plugin.json +9 -0
  167. package/package.json +79 -0
package/dist/src/im.js ADDED
@@ -0,0 +1,328 @@
1
+ import { listEnabledFeishuAccounts } from "./accounts.js";
2
+ import { createFeishuClient } from "./client.js";
3
+ import { resolveToolsConfig } from "./tools-config.js";
4
+ import { ListChatsSchema, GetChatSchema, ListMembersSchema, SendMessageSchema, ReplyMessageSchema, GetMessagesSchema, CreateChatSchema, } from "./im-schema.js";
5
+ // ============ Helpers ============
6
+ function json(data) {
7
+ return {
8
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
9
+ details: data,
10
+ };
11
+ }
12
+ /** Auto-detect receive_id_type from the ID format */
13
+ function inferReceiveIdType(receiveId) {
14
+ if (receiveId.startsWith("oc_"))
15
+ return "chat_id";
16
+ if (receiveId.startsWith("ou_"))
17
+ return "open_id";
18
+ if (receiveId.startsWith("on_"))
19
+ return "union_id";
20
+ if (receiveId.includes("@"))
21
+ return "email";
22
+ return "user_id";
23
+ }
24
+ // ============ Core Functions ============
25
+ /** List all chats the bot has joined */
26
+ export async function listChats(client, pageSize, pageToken) {
27
+ const res = await client.im.chat.list({
28
+ params: {
29
+ page_size: pageSize ?? 20,
30
+ ...(pageToken && { page_token: pageToken }),
31
+ },
32
+ });
33
+ if (res.code !== 0) {
34
+ throw new Error(res.msg);
35
+ }
36
+ return {
37
+ chats: (res.data?.items ?? []).map((c) => ({
38
+ chat_id: c.chat_id,
39
+ name: c.name,
40
+ description: c.description,
41
+ owner_id: c.owner_id,
42
+ chat_mode: c.chat_mode,
43
+ chat_type: c.chat_type,
44
+ member_count: c.user_count,
45
+ })),
46
+ has_more: res.data?.has_more ?? false,
47
+ page_token: res.data?.page_token,
48
+ };
49
+ }
50
+ /** Get detailed info about a specific chat */
51
+ export async function getChatInfo(client, chatId) {
52
+ const res = await client.im.chat.get({
53
+ path: { chat_id: chatId },
54
+ });
55
+ if (res.code !== 0) {
56
+ throw new Error(res.msg);
57
+ }
58
+ return {
59
+ chat_id: res.data?.chat_id,
60
+ name: res.data?.name,
61
+ description: res.data?.description,
62
+ owner_id: res.data?.owner_id,
63
+ chat_mode: res.data?.chat_mode,
64
+ chat_type: res.data?.chat_type,
65
+ member_count: res.data?.user_count,
66
+ bot_name: res.data?.bot_name,
67
+ };
68
+ }
69
+ /** List members of a chat */
70
+ export async function listChatMembers(client, chatId, pageSize, pageToken) {
71
+ const res = await client.im.chatMembers.get({
72
+ path: { chat_id: chatId },
73
+ params: {
74
+ page_size: pageSize ?? 20,
75
+ ...(pageToken && { page_token: pageToken }),
76
+ },
77
+ });
78
+ if (res.code !== 0) {
79
+ throw new Error(res.msg);
80
+ }
81
+ return {
82
+ members: (res.data?.items ?? []).map((m) => ({
83
+ member_id: m.member_id,
84
+ member_id_type: m.member_id_type,
85
+ name: m.name,
86
+ tenant_key: m.tenant_key,
87
+ })),
88
+ has_more: res.data?.has_more ?? false,
89
+ page_token: res.data?.page_token,
90
+ member_total: res.data?.member_total,
91
+ };
92
+ }
93
+ /** Send a message to a chat or user */
94
+ export async function sendMessage(client, receiveId, msgType, content, receiveIdType) {
95
+ const idType = receiveIdType || inferReceiveIdType(receiveId);
96
+ const res = await client.im.message.create({
97
+ params: {
98
+ receive_id_type: idType,
99
+ },
100
+ data: {
101
+ receive_id: receiveId,
102
+ msg_type: msgType,
103
+ content,
104
+ },
105
+ });
106
+ if (res.code !== 0) {
107
+ throw new Error(res.msg);
108
+ }
109
+ return {
110
+ message_id: res.data?.message_id,
111
+ chat_id: res.data?.chat_id,
112
+ };
113
+ }
114
+ /** Reply to a specific message */
115
+ export async function replyMessage(client, messageId, msgType, content) {
116
+ const res = await client.im.message.reply({
117
+ path: { message_id: messageId },
118
+ data: {
119
+ msg_type: msgType,
120
+ content,
121
+ },
122
+ });
123
+ if (res.code !== 0) {
124
+ throw new Error(res.msg);
125
+ }
126
+ return {
127
+ message_id: res.data?.message_id,
128
+ chat_id: res.data?.chat_id,
129
+ };
130
+ }
131
+ /** List messages in a chat */
132
+ export async function listMessages(client, containerId, startTime, endTime, pageSize, pageToken, sortType) {
133
+ const res = await client.im.message.list({
134
+ params: {
135
+ container_id_type: "chat",
136
+ container_id: containerId,
137
+ page_size: pageSize ?? 20,
138
+ ...(startTime && { start_time: startTime }),
139
+ ...(endTime && { end_time: endTime }),
140
+ ...(pageToken && { page_token: pageToken }),
141
+ ...(sortType && { sort_type: sortType }),
142
+ },
143
+ });
144
+ if (res.code !== 0) {
145
+ throw new Error(res.msg);
146
+ }
147
+ return {
148
+ messages: (res.data?.items ?? []).map((m) => ({
149
+ message_id: m.message_id,
150
+ msg_type: m.msg_type,
151
+ content: m.body?.content,
152
+ sender_id: m.sender?.id,
153
+ sender_type: m.sender?.sender_type,
154
+ create_time: m.create_time,
155
+ chat_id: m.chat_id,
156
+ })),
157
+ has_more: res.data?.has_more ?? false,
158
+ page_token: res.data?.page_token,
159
+ };
160
+ }
161
+ /** Create a new chat group */
162
+ export async function createChat(client, name, description, userIds, chatMode) {
163
+ const res = await client.im.chat.create({
164
+ params: {
165
+ // 使用 open_id 类型标识成员
166
+ ...(userIds && userIds.length > 0 && { set_bot_manager: false }),
167
+ },
168
+ data: {
169
+ name,
170
+ ...(description && { description }),
171
+ ...(userIds &&
172
+ userIds.length > 0 && {
173
+ user_id_list: userIds,
174
+ }),
175
+ ...(chatMode && { chat_mode: chatMode }),
176
+ },
177
+ });
178
+ if (res.code !== 0) {
179
+ throw new Error(res.msg);
180
+ }
181
+ return {
182
+ chat_id: res.data?.chat_id,
183
+ name: res.data?.name,
184
+ };
185
+ }
186
+ // ============ Tool Registration ============
187
+ export function registerFeishuImTools(api) {
188
+ if (!api.config) {
189
+ api.logger.debug?.("feishu_im: No config available, skipping IM tools");
190
+ return;
191
+ }
192
+ const accounts = listEnabledFeishuAccounts(api.config);
193
+ if (accounts.length === 0) {
194
+ api.logger.debug?.("feishu_im: No Feishu accounts configured, skipping IM tools");
195
+ return;
196
+ }
197
+ const firstAccount = accounts[0];
198
+ const toolsCfg = resolveToolsConfig(firstAccount.config.tools);
199
+ if (!toolsCfg.im) {
200
+ api.logger.debug?.("feishu_im: IM tools disabled in config");
201
+ return;
202
+ }
203
+ const getClient = () => createFeishuClient(firstAccount);
204
+ const registered = [];
205
+ // Tool 1: feishu_im_list_chats
206
+ api.registerTool({
207
+ name: "feishu_im_list_chats",
208
+ label: "飞书 - 列出群聊",
209
+ description: "列出机器人已加入的所有群聊,返回群名称、ID、成员数等信息",
210
+ parameters: ListChatsSchema,
211
+ async execute(_toolCallId, params) {
212
+ const { page_size, page_token } = params;
213
+ try {
214
+ return json(await listChats(getClient(), page_size, page_token));
215
+ }
216
+ catch (err) {
217
+ return json({ error: err instanceof Error ? err.message : String(err) });
218
+ }
219
+ },
220
+ }, { name: "feishu_im_list_chats" });
221
+ registered.push("feishu_im_list_chats");
222
+ // Tool 2: feishu_im_get_chat
223
+ api.registerTool({
224
+ name: "feishu_im_get_chat",
225
+ label: "飞书 - 获取群信息",
226
+ description: "获取指定群聊的详细信息,包括名称、描述、群主、成员数等",
227
+ parameters: GetChatSchema,
228
+ async execute(_toolCallId, params) {
229
+ const { chat_id } = params;
230
+ try {
231
+ return json(await getChatInfo(getClient(), chat_id));
232
+ }
233
+ catch (err) {
234
+ return json({ error: err instanceof Error ? err.message : String(err) });
235
+ }
236
+ },
237
+ }, { name: "feishu_im_get_chat" });
238
+ registered.push("feishu_im_get_chat");
239
+ // Tool 3: feishu_im_list_members
240
+ api.registerTool({
241
+ name: "feishu_im_list_members",
242
+ label: "飞书 - 获取群成员",
243
+ description: "获取指定群聊的成员列表,返回成员 ID、名称等。可用于找到要 @mention 的用户。",
244
+ parameters: ListMembersSchema,
245
+ async execute(_toolCallId, params) {
246
+ const { chat_id, page_size, page_token } = params;
247
+ try {
248
+ return json(await listChatMembers(getClient(), chat_id, page_size, page_token));
249
+ }
250
+ catch (err) {
251
+ return json({ error: err instanceof Error ? err.message : String(err) });
252
+ }
253
+ },
254
+ }, { name: "feishu_im_list_members" });
255
+ registered.push("feishu_im_list_members");
256
+ // Tool 4: feishu_im_send_message
257
+ api.registerTool({
258
+ name: "feishu_im_send_message",
259
+ label: "飞书 - 发送消息",
260
+ description: '主动向群聊或用户发送消息。支持 text(纯文本)、post(富文本)、interactive(卡片) 三种类型。\n发送 @mention 时使用 <at user_id="ou_xxx">名字</at> 语法。\nreceive_id 自动识别类型:oc_ 开头为群聊 ID,ou_ 开头为用户 open_id。',
261
+ parameters: SendMessageSchema,
262
+ async execute(_toolCallId, params) {
263
+ const { receive_id, receive_id_type, msg_type, content } = params;
264
+ try {
265
+ return json(await sendMessage(getClient(), receive_id, msg_type, content, receive_id_type));
266
+ }
267
+ catch (err) {
268
+ return json({ error: err instanceof Error ? err.message : String(err) });
269
+ }
270
+ },
271
+ }, { name: "feishu_im_send_message" });
272
+ registered.push("feishu_im_send_message");
273
+ // Tool 5: feishu_im_reply_message
274
+ api.registerTool({
275
+ name: "feishu_im_reply_message",
276
+ label: "飞书 - 回复消息",
277
+ description: "回复指定的消息。将在原消息下方产生回复。",
278
+ parameters: ReplyMessageSchema,
279
+ async execute(_toolCallId, params) {
280
+ const { message_id, msg_type, content } = params;
281
+ try {
282
+ return json(await replyMessage(getClient(), message_id, msg_type, content));
283
+ }
284
+ catch (err) {
285
+ return json({ error: err instanceof Error ? err.message : String(err) });
286
+ }
287
+ },
288
+ }, { name: "feishu_im_reply_message" });
289
+ registered.push("feishu_im_reply_message");
290
+ // Tool 6: feishu_im_get_messages
291
+ api.registerTool({
292
+ name: "feishu_im_get_messages",
293
+ label: "飞书 - 获取历史消息",
294
+ description: "获取指定群聊的历史消息列表。可指定时间范围和排序方式。返回消息内容、发送者、时间等信息。",
295
+ parameters: GetMessagesSchema,
296
+ async execute(_toolCallId, params) {
297
+ const { container_id, start_time, end_time, page_size, page_token, sort_type } = params;
298
+ try {
299
+ return json(await listMessages(getClient(), container_id, start_time, end_time, page_size, page_token, sort_type));
300
+ }
301
+ catch (err) {
302
+ return json({ error: err instanceof Error ? err.message : String(err) });
303
+ }
304
+ },
305
+ }, { name: "feishu_im_get_messages" });
306
+ registered.push("feishu_im_get_messages");
307
+ // Tool 7: feishu_im_create_chat
308
+ api.registerTool({
309
+ name: "feishu_im_create_chat",
310
+ label: "飞书 - 创建群聊",
311
+ description: "创建一个新的群聊,可指定群名称、描述和初始成员。",
312
+ parameters: CreateChatSchema,
313
+ async execute(_toolCallId, params) {
314
+ const { name, description, user_ids, chat_mode } = params;
315
+ try {
316
+ return json(await createChat(getClient(), name, description, user_ids, chat_mode));
317
+ }
318
+ catch (err) {
319
+ return json({ error: err instanceof Error ? err.message : String(err) });
320
+ }
321
+ },
322
+ }, { name: "feishu_im_create_chat" });
323
+ registered.push("feishu_im_create_chat");
324
+ if (registered.length > 0) {
325
+ api.logger.info?.(`feishu_im: Registered ${registered.join(", ")}`);
326
+ }
327
+ }
328
+ //# sourceMappingURL=im.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"im.js","sourceRoot":"","sources":["../../src/im.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import type { OpenClawConfig as ClawdbotConfig } from "openclaw/plugin-sdk";
2
+ export type DownloadImageResult = {
3
+ buffer: Buffer;
4
+ contentType?: string;
5
+ };
6
+ export type DownloadMessageResourceResult = {
7
+ buffer: Buffer;
8
+ contentType?: string;
9
+ fileName?: string;
10
+ };
11
+ /**
12
+ * Download an image from Feishu using image_key.
13
+ * Used for downloading images sent in messages.
14
+ */
15
+ export declare function downloadImageFeishu(params: {
16
+ cfg: ClawdbotConfig;
17
+ imageKey: string;
18
+ accountId?: string;
19
+ }): Promise<DownloadImageResult>;
20
+ /**
21
+ * Download a message resource (file/image/audio/video) from Feishu.
22
+ * Used for downloading files, audio, and video from messages.
23
+ */
24
+ export declare function downloadMessageResourceFeishu(params: {
25
+ cfg: ClawdbotConfig;
26
+ messageId: string;
27
+ fileKey: string;
28
+ type: "image" | "file";
29
+ accountId?: string;
30
+ }): Promise<DownloadMessageResourceResult>;
31
+ export type UploadImageResult = {
32
+ imageKey: string;
33
+ };
34
+ export type UploadFileResult = {
35
+ fileKey: string;
36
+ };
37
+ export type SendMediaResult = {
38
+ messageId: string;
39
+ chatId: string;
40
+ };
41
+ /**
42
+ * Upload an image to Feishu and get an image_key for sending.
43
+ * Supports: JPEG, PNG, WEBP, GIF, TIFF, BMP, ICO
44
+ */
45
+ export declare function uploadImageFeishu(params: {
46
+ cfg: ClawdbotConfig;
47
+ image: Buffer | string;
48
+ imageType?: "message" | "avatar";
49
+ accountId?: string;
50
+ }): Promise<UploadImageResult>;
51
+ /**
52
+ * Upload a file to Feishu and get a file_key for sending.
53
+ * Max file size: 30MB
54
+ */
55
+ export declare function uploadFileFeishu(params: {
56
+ cfg: ClawdbotConfig;
57
+ file: Buffer | string;
58
+ fileName: string;
59
+ fileType: "opus" | "mp4" | "pdf" | "doc" | "xls" | "ppt" | "stream";
60
+ duration?: number;
61
+ accountId?: string;
62
+ }): Promise<UploadFileResult>;
63
+ /**
64
+ * Send an image message using an image_key
65
+ */
66
+ export declare function sendImageFeishu(params: {
67
+ cfg: ClawdbotConfig;
68
+ to: string;
69
+ imageKey: string;
70
+ replyToMessageId?: string;
71
+ accountId?: string;
72
+ }): Promise<SendMediaResult>;
73
+ /**
74
+ * Send a file message using a file_key
75
+ */
76
+ export declare function sendFileFeishu(params: {
77
+ cfg: ClawdbotConfig;
78
+ to: string;
79
+ fileKey: string;
80
+ replyToMessageId?: string;
81
+ accountId?: string;
82
+ }): Promise<SendMediaResult>;
83
+ /**
84
+ * Helper to detect file type from extension
85
+ */
86
+ export declare function detectFileType(fileName: string): "opus" | "mp4" | "pdf" | "doc" | "xls" | "ppt" | "stream";
87
+ /**
88
+ * Upload and send media (image or file) from URL, local path, or buffer
89
+ */
90
+ export declare function sendMediaFeishu(params: {
91
+ cfg: ClawdbotConfig;
92
+ to: string;
93
+ mediaUrl?: string;
94
+ mediaBuffer?: Buffer;
95
+ fileName?: string;
96
+ replyToMessageId?: string;
97
+ accountId?: string;
98
+ }): Promise<SendMediaResult>;
99
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/media.ts"],"names":[],"mappings":"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"}