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()