/** * 飞书客户端模块 * 封装飞书 SDK,提供消息收发和卡片操作功能 */ import * as Lark from '@larksuiteoapi/node-sdk'; /** 飞书客户端配置 */ export interface FeishuConfig { appId: string; appSecret: string; domain?: string; } /** 消息事件数据 */ export interface MessageEvent { eventId: string; messageId: string; chatId: string; chatType: 'p2p' | 'group'; senderId: string; senderType: string; messageType: string; content: string; createTime: string; mentions?: Array<{ key: string; id: string; name: string; }>; } /** 消息处理回调函数类型 */ export type MessageHandler = (event: MessageEvent) => Promise; /** 卡片更新结果 */ export interface UpdateCardResult { success: boolean; rateLimited?: boolean; } /** 机器人进群事件 */ export interface BotAddedEvent { eventId: string; chatId: string; operatorId: string; chatName?: string; } /** 消息撤回事件 */ export interface MessageRecalledEvent { eventId: string; messageId: string; chatId: string; recallTime: string; recallType: 'message_owner' | 'group_owner' | 'group_manager' | 'enterprise_manager'; } /** 机器人移出群事件 */ export interface BotRemovedEvent { eventId: string; chatId: string; operatorId: string; } /** 机器人菜单点击事件 */ export interface BotMenuEvent { eventId: string; eventKey: string; operatorId: string; operatorName?: string; chatId?: string; messageId?: string; timestamp: string; } /** 用户退群事件 */ export interface UserLeftChatEvent { eventId: string; chatId: string; operatorId: string; users: Array<{ userId: string; name?: string; }>; chatName?: string; } /** 群解散事件 */ export interface ChatDisbandedEvent { eventId: string; chatId: string; operatorId: string; chatName?: string; } /** 卡片交互事件 */ export interface CardActionEvent { eventId: string; operatorId: string; chatId?: string; messageId?: string; action: { tag: string; value: Record; option?: string; }; } export type BotAddedHandler = (event: BotAddedEvent) => Promise; export type MessageRecalledHandler = (event: MessageRecalledEvent) => Promise; export type BotRemovedHandler = (event: BotRemovedEvent) => Promise; export type BotMenuHandler = (event: BotMenuEvent) => Promise; export type UserLeftChatHandler = (event: UserLeftChatEvent) => Promise; export type ChatDisbandedHandler = (event: ChatDisbandedEvent) => Promise; export type CardActionHandler = (event: CardActionEvent) => Promise; /** 群聊菜单项 */ export interface ChatMenuItem { action_type: 'NONE' | 'REDIRECT_LINK'; redirect_link?: { common_url?: string; ios_url?: string; android_url?: string; pc_url?: string; web_url?: string; }; image_key?: string; name: string; i18n_names?: { zh_cn?: string; en_us?: string; ja_jp?: string; }; } /** 群聊菜单树结构 */ export interface ChatMenuTree { chat_menu_top_levels: Array<{ chat_menu_item: ChatMenuItem; children?: Array<{ chat_menu_item: ChatMenuItem; }>; }>; } /** 飞书客户端类 */ export declare class FeishuClient { private client; private wsClient; private appId; private appSecret; private messageHandler; private botAddedHandler; private messageRecalledHandler; private botRemovedHandler; private botMenuHandler; private userLeftChatHandler; private chatDisbandedHandler; private cardActionHandler; private isConnected; constructor(config: FeishuConfig); /** 注册消息处理回调 */ onMessage(handler: MessageHandler): void; onBotAdded(handler: BotAddedHandler): void; onMessageRecalled(handler: MessageRecalledHandler): void; onBotRemoved(handler: BotRemovedHandler): void; onBotMenu(handler: BotMenuHandler): void; onUserLeftChat(handler: UserLeftChatHandler): void; onChatDisbanded(handler: ChatDisbandedHandler): void; onCardAction(handler: CardActionHandler): void; /** 启动 WebSocket 连接 */ start(): Promise; /** 处理消息事件 */ private handleMessageEvent; private handleBotAddedEvent; private handleMessageRecalledEvent; private handleBotRemovedEvent; private handleBotMenuEvent; private handleUserLeftChatEvent; private handleChatDisbandedEvent; private handleCardActionEvent; /** 从原始数据中提取事件数据 */ private extractEventData; /** 发送消息 */ sendMessage(chatId: string, content: string, msgType?: 'text' | 'interactive'): Promise; sendMessageToUser(userId: string, content: string, msgType?: 'text' | 'interactive'): Promise; sendCardToUser(userId: string, card: object): Promise; /** 发送文本消息 */ sendTextMessage(chatId: string, text: string): Promise; /** 发送卡片消息 */ sendCard(chatId: string, card: object): Promise; /** 更新卡片消息 */ updateCard(messageId: string, card: object): Promise; deleteMessage(messageId: string): Promise; createChat(name: string, userIds: string[]): Promise<{ chatId: string; shareLink?: string; } | null>; updateChatName(chatId: string, name: string): Promise; deleteChat(chatId: string): Promise; getChatInfo(chatId: string): Promise<{ name?: string; userCount?: number; } | null>; pinMessage(messageId: string): Promise; unpinMessage(messageId: string): Promise; /** 创建群聊菜单 */ createChatMenu(chatId: string, menuTree: ChatMenuTree): Promise; /** 删除群聊菜单 */ deleteChatMenu(chatId: string, menuIds: string[]): Promise; /** 获取群聊菜单 */ getChatMenu(chatId: string): Promise; getMessageImage(messageId: string, imageKey: string): Promise<{ data: Buffer; mimeType: string; } | null>; /** 获取 API 客户端实例 */ getApiClient(): Lark.Client; /** 检查连接状态 */ isReady(): boolean; /** 停止客户端 */ stop(): Promise; } /** 解析文本消息内容 */ export declare function parseTextContent(content: string): string; /** 解析图片消息内容,返回 image_key */ export declare function parseImageContent(content: string): string | null; export declare function cleanMentionsFromText(text: string, mentions?: Array<{ key: string; }>): string; /** 创建飞书客户端实例 */ export declare function createFeishuClient(config: FeishuConfig): FeishuClient; //# sourceMappingURL=client.d.ts.map