|
@@ -0,0 +1,85 @@
|
|
|
+import lark_oapi as lark
|
|
|
+from lark_oapi.api.im.v1 import *
|
|
|
+from config import config
|
|
|
+import json
|
|
|
+import httpx
|
|
|
+import asyncio
|
|
|
+
|
|
|
+# 注册接收消息事件,处理接收到的消息。
|
|
|
+# Register event handler to handle received messages.
|
|
|
+# https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/events/receive
|
|
|
+
|
|
|
+def do_p2_im_message_receive_v1(data: P2ImMessageReceiveV1) -> None:
|
|
|
+ """
|
|
|
+ "message_id": str,
|
|
|
+ "root_id": str,
|
|
|
+ "parent_id": str,
|
|
|
+ "create_time": int,
|
|
|
+ "update_time": int,
|
|
|
+ "chat_id": str,
|
|
|
+ "thread_id": str,
|
|
|
+ "chat_type": str,
|
|
|
+ "message_type": str,
|
|
|
+ "content": str,
|
|
|
+ "mentions": List[MentionEvent],
|
|
|
+ "user_agent": str,
|
|
|
+
|
|
|
+ 构造该字典后返回
|
|
|
+ """
|
|
|
+ result = {
|
|
|
+ "message_id": data.event.message.message_id,
|
|
|
+ "root_id": data.event.message.root_id,
|
|
|
+ "parent_id": data.event.message.parent_id,
|
|
|
+ "create_time": data.event.message.create_time,
|
|
|
+ "update_time": data.event.message.update_time,
|
|
|
+ "chat_id": data.event.message.chat_id,
|
|
|
+ "thread_id": data.event.message.thread_id,
|
|
|
+ "chat_type": data.event.message.chat_type,
|
|
|
+ "message_type": data.event.message.message_type,
|
|
|
+ "content": data.event.message.content,
|
|
|
+ "mentions": data.event.message.mentions,
|
|
|
+ "user_agent": data.event.message.user_agent
|
|
|
+ }
|
|
|
+ print("--------on_message---------")
|
|
|
+ print(result)
|
|
|
+
|
|
|
+ try:
|
|
|
+ asyncio.create_task(_send_record_async(result))
|
|
|
+ except Exception as e:
|
|
|
+ print(f"发送数据到记录端点失败: {e}")
|
|
|
+
|
|
|
+async def _send_record_async(data):
|
|
|
+ """异步发送数据到记录端点"""
|
|
|
+ async with httpx.AsyncClient() as client:
|
|
|
+ try:
|
|
|
+ await client.post("http://localhost:3000/record", json=data, timeout=10)
|
|
|
+ except Exception as e:
|
|
|
+ print(f"异步发送数据到记录端点失败: {e}")
|
|
|
+
|
|
|
+# 注册事件回调
|
|
|
+# Register event handler.
|
|
|
+event_handler = (
|
|
|
+ lark.EventDispatcherHandler.builder("", "")
|
|
|
+ .register_p2_im_message_receive_v1(do_p2_im_message_receive_v1)
|
|
|
+ .build()
|
|
|
+)
|
|
|
+
|
|
|
+app_id = config.get("bot.app_id")
|
|
|
+app_secret = config.get("bot.app_secret")
|
|
|
+
|
|
|
+# 创建websocket长连接实例,开启监听
|
|
|
+wsClient = lark.ws.Client(
|
|
|
+ app_id,
|
|
|
+ app_secret,
|
|
|
+ event_handler=event_handler,
|
|
|
+ log_level=lark.LogLevel.INFO,
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+ # 启动长连接,并注册事件处理器。
|
|
|
+ # Start long connection and register event handler.
|
|
|
+ wsClient.start()
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ main()
|