Ignore Feishu message read events

This commit is contained in:
taohe
2026-06-11 17:15:44 +08:00
parent b26b30ac3d
commit f330ddce01
2 changed files with 24 additions and 1 deletions
+12 -1
View File
@@ -94,6 +94,14 @@ class FeishuChannel(Channel):
return False
return self._thread is not None and self._thread.is_alive()
def _build_event_handler(self, lark):
return (
lark.EventDispatcherHandler.builder("", "")
.register_p2_im_message_receive_v1(self._on_message)
.register_p2_im_message_message_read_v1(self._on_message_read)
.build()
)
async def start(self) -> None:
if self._running:
return
@@ -187,7 +195,7 @@ class FeishuChannel(Channel):
# thread's uvloop.
_ws_client_mod.loop = loop
event_handler = lark.EventDispatcherHandler.builder("", "").register_p2_im_message_receive_v1(self._on_message).build()
event_handler = self._build_event_handler(lark)
ws_client = lark.ws.Client(
app_id=app_id,
app_secret=app_secret,
@@ -201,6 +209,9 @@ class FeishuChannel(Channel):
logger.exception("Feishu WebSocket error")
self._running = False
def _on_message_read(self, event) -> None:
logger.debug("[Feishu] ignoring message read event: %s", type(event).__name__)
async def stop(self) -> None:
self._running = False
self.bus.unsubscribe_outbound(self._on_outbound)
+12
View File
@@ -83,6 +83,18 @@ def test_feishu_is_not_running_when_ws_thread_exits():
assert channel.is_running is False
def test_feishu_event_handler_ignores_message_read_events():
import lark_oapi as lark
bus = MessageBus()
channel = FeishuChannel(bus, {"app_id": "test", "app_secret": "test"})
event_handler = channel._build_event_handler(lark)
assert "p2.im.message.receive_v1" in event_handler._processorMap
assert "p2.im.message.message_read_v1" in event_handler._processorMap
def test_feishu_on_message_rich_text():
bus = MessageBus()
config = {"app_id": "test", "app_secret": "test"}