diff --git a/mateclaw-server/src/main/java/vip/mate/channel/feishu/FeishuChannelAdapter.java b/mateclaw-server/src/main/java/vip/mate/channel/feishu/FeishuChannelAdapter.java
index 9d55ce25..30dd6ff2 100644
--- a/mateclaw-server/src/main/java/vip/mate/channel/feishu/FeishuChannelAdapter.java
+++ b/mateclaw-server/src/main/java/vip/mate/channel/feishu/FeishuChannelAdapter.java
@@ -377,7 +377,11 @@ public class FeishuChannelAdapter extends AbstractChannelAdapter implements Stre
}
}
})
- // Silently ignore message reaction events to avoid HandlerNotFoundException
+ // Silently ignore all other IM events to avoid HandlerNotFoundException.
+ // When the SDK receives an event without a registered handler, it throws
+ // HandlerNotFoundException → SDK catches it and sends a 500 response →
+ // the Feishu server may close the WebSocket connection. The exception is
+ // swallowed inside the SDK so it never appears in application logs.
.onP2MessageReactionCreatedV1(new ImService.P2MessageReactionCreatedV1Handler() {
@Override
public void handle(com.lark.oapi.service.im.v1.model.P2MessageReactionCreatedV1 event) {}
@@ -386,11 +390,46 @@ public class FeishuChannelAdapter extends AbstractChannelAdapter implements Stre
@Override
public void handle(com.lark.oapi.service.im.v1.model.P2MessageReactionDeletedV1 event) {}
})
- // Silently ignore bot added to chat event to avoid HandlerNotFoundException (#153)
+ .onP2MessageReadV1(new ImService.P2MessageReadV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2MessageReadV1 event) {}
+ })
+ .onP2MessageRecalledV1(new ImService.P2MessageRecalledV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2MessageRecalledV1 event) {}
+ })
.onP2ChatMemberBotAddedV1(new ImService.P2ChatMemberBotAddedV1Handler() {
@Override
public void handle(com.lark.oapi.service.im.v1.model.P2ChatMemberBotAddedV1 event) {}
})
+ .onP2ChatMemberBotDeletedV1(new ImService.P2ChatMemberBotDeletedV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatMemberBotDeletedV1 event) {}
+ })
+ .onP2ChatMemberUserAddedV1(new ImService.P2ChatMemberUserAddedV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatMemberUserAddedV1 event) {}
+ })
+ .onP2ChatMemberUserDeletedV1(new ImService.P2ChatMemberUserDeletedV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatMemberUserDeletedV1 event) {}
+ })
+ .onP2ChatMemberUserWithdrawnV1(new ImService.P2ChatMemberUserWithdrawnV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatMemberUserWithdrawnV1 event) {}
+ })
+ .onP2ChatUpdatedV1(new ImService.P2ChatUpdatedV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatUpdatedV1 event) {}
+ })
+ .onP2ChatDisbandedV1(new ImService.P2ChatDisbandedV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatDisbandedV1 event) {}
+ })
+ .onP2ChatAccessEventBotP2pChatEnteredV1(new ImService.P2ChatAccessEventBotP2pChatEnteredV1Handler() {
+ @Override
+ public void handle(com.lark.oapi.service.im.v1.model.P2ChatAccessEventBotP2pChatEnteredV1 event) {}
+ })
// Interactive card button clicks (Schema 2.0) — routed through cardDispatcher.
// The returned P2CardActionTriggerResponse is how Schema-2.0
// cards update in-place; PATCH /im/v1/messages/{id} is a
diff --git a/mateclaw-server/src/main/resources/logback-spring.xml b/mateclaw-server/src/main/resources/logback-spring.xml
index 6922ce98..9710add5 100644
--- a/mateclaw-server/src/main/resources/logback-spring.xml
+++ b/mateclaw-server/src/main/resources/logback-spring.xml
@@ -114,6 +114,9 @@
+
+
+