feishu-bridge 1.0.7 → 1.0.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.
package/dist/cli/index.js CHANGED
@@ -770,9 +770,6 @@ var FeishuWebSocketHandler = class {
770
770
  this.logger = new Logger();
771
771
  this.messageRouter = new MessageRouter(adapters);
772
772
  }
773
- /**
774
- * 启动WebSocket连接
775
- */
776
773
  async start() {
777
774
  if (this.isRunning) {
778
775
  this.logger.warn("WebSocket handler already running");
@@ -788,71 +785,36 @@ var FeishuWebSocketHandler = class {
788
785
  loggerLevel: Lark.LoggerLevel.info
789
786
  });
790
787
  this.eventDispatcher = new Lark.EventDispatcher({
791
- encryptKey: config.encryptKey,
792
- verificationToken: config.verificationToken
788
+ encryptKey: config.encryptKey || "",
789
+ verificationToken: config.verificationToken || ""
793
790
  });
794
791
  this.registerEventHandlers();
795
- this.wsClient.on("message", async (event) => {
796
- await this.handleEvent(event);
797
- });
798
- this.wsClient.on("error", (error) => {
799
- this.logger.error("WebSocket error:", error);
800
- });
801
- this.wsClient.on("close", () => {
802
- this.logger.info("WebSocket connection closed");
803
- if (this.isRunning) {
804
- this.logger.info("Attempting to reconnect...");
805
- setTimeout(() => this.start(), 5e3);
806
- }
807
- });
792
+ this.logger.info("Starting WebSocket connection...");
793
+ await this.wsClient.start({ eventDispatcher: this.eventDispatcher });
808
794
  this.isRunning = true;
809
- this.logger.info("Feishu WebSocket handler started successfully");
795
+ this.logger.info("\u2705 Feishu WebSocket connected successfully!");
810
796
  } catch (error) {
811
- this.logger.error("Failed to start WebSocket handler:", error);
797
+ this.logger.error("\u274C Failed to start WebSocket handler:", error);
812
798
  throw error;
813
799
  }
814
800
  }
815
- /**
816
- * 停止WebSocket连接
817
- */
818
- async stop() {
819
- this.isRunning = false;
820
- if (this.wsClient) {
821
- this.wsClient.close();
822
- this.wsClient = null;
823
- }
824
- this.logger.info("WebSocket handler stopped");
825
- }
826
- /**
827
- * 注册事件处理器
828
- */
829
801
  registerEventHandlers() {
830
802
  if (!this.eventDispatcher) return;
831
- this.eventDispatcher.on("im.message.receive_v1", async (event) => {
832
- await this.handleMessageEvent(event);
833
- });
834
- this.eventDispatcher.on("im.chat.member.bot.added_v1", (event) => {
835
- this.logger.info("Bot added to chat:", event);
836
- });
837
- this.eventDispatcher.on("im.chat.member.bot.deleted_v1", (event) => {
838
- this.logger.info("Bot removed from chat:", event);
839
- });
840
- }
841
- /**
842
- * 处理事件
843
- */
844
- async handleEvent(event) {
845
- try {
846
- if (this.eventDispatcher) {
847
- await this.eventDispatcher.dispatch(event);
803
+ this.eventDispatcher.register({
804
+ "im.message.receive_v1": async (event) => {
805
+ await this.handleMessageEvent(event);
806
+ },
807
+ "im.message.message_read_v1": (event) => {
808
+ this.logger.debug("Message read:", event);
809
+ },
810
+ "im.chat.member.bot.added_v1": (event) => {
811
+ this.logger.info("Bot added to chat:", event);
812
+ },
813
+ "im.chat.member.bot.deleted_v1": (event) => {
814
+ this.logger.info("Bot removed from chat:", event);
848
815
  }
849
- } catch (error) {
850
- this.logger.error("Error dispatching event:", error);
851
- }
816
+ });
852
817
  }
853
- /**
854
- * 处理消息事件
855
- */
856
818
  async handleMessageEvent(event) {
857
819
  const { message, sender } = event;
858
820
  if (!message || message.message_type !== "text") {
@@ -867,7 +829,7 @@ var FeishuWebSocketHandler = class {
867
829
  this.logger.warn("Missing sender ID");
868
830
  return;
869
831
  }
870
- this.logger.info(`Received message from ${senderId}: ${text}`);
832
+ this.logger.info(`\u{1F4E8} Received message from ${senderId}: ${text}`);
871
833
  const route = await this.messageRouter.route(text);
872
834
  if (route.type === "error") {
873
835
  await this.client.sendMessage(message.chat_id, {
@@ -885,7 +847,7 @@ var FeishuWebSocketHandler = class {
885
847
  }
886
848
  if (route.type === "direct" && route.target) {
887
849
  const command = this.messageRouter.extractCommand(text);
888
- this.logger.info(`Executing command for ${route.target}: ${command}`);
850
+ this.logger.info(`\u{1F3AF} Routing to ${route.target}: ${command}`);
889
851
  await this.client.sendMessage(message.chat_id, {
890
852
  msg_type: "text",
891
853
  content: { text: `\u23F3 \u6B63\u5728\u6267\u884C: ${command}` }
@@ -902,20 +864,17 @@ var FeishuWebSocketHandler = class {
902
864
  });
903
865
  }
904
866
  } catch (error) {
905
- this.logger.error("Error processing message event:", error);
867
+ this.logger.error("Error processing event:", error);
906
868
  try {
907
869
  await this.client.sendMessage(message.chat_id, {
908
870
  msg_type: "text",
909
- content: { text: `\u274C \u5904\u7406\u6D88\u606F\u65F6\u51FA\u9519: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}` }
871
+ content: { text: `\u274C \u5904\u7406\u6D88\u606F\u65F6\u51FA\u9519` }
910
872
  });
911
873
  } catch (sendError) {
912
874
  this.logger.error("Failed to send error message:", sendError);
913
875
  }
914
876
  }
915
877
  }
916
- /**
917
- * 格式化响应
918
- */
919
878
  formatResponse(result) {
920
879
  if (result.success) {
921
880
  const output = typeof result.output === "string" ? result.output.substring(0, 2e3) : JSON.stringify(result.output).substring(0, 2e3);
@@ -929,6 +888,14 @@ ${output}`;
929
888
  ${error.substring(0, 2e3)}`;
930
889
  }
931
890
  }
891
+ async stop() {
892
+ this.isRunning = false;
893
+ if (this.wsClient) {
894
+ this.wsClient.close();
895
+ this.wsClient = null;
896
+ }
897
+ this.logger.info("WebSocket handler stopped");
898
+ }
932
899
  };
933
900
 
934
901
  // src/feishu/client.ts