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