1
1
import json
2
2
import re
3
3
from enum import Enum
4
- from typing import Union , List
4
+ from typing import List , Union
5
5
6
6
import lark_oapi as lark
7
7
import requests
8
8
from fastapi import Request , Response
9
- from lark_oapi import RawRequest , RawResponse , UTF_8 , USER_AGENT , AUTHORIZATION , X_TT_LOGID , X_REQUEST_ID , CONTENT_TYPE , \
10
- Content_Disposition , LARK_REQUEST_TIMESTAMP , LARK_REQUEST_NONCE , LARK_REQUEST_SIGNATURE
11
- from lark_oapi .api .im .v1 import GetChatRequest , P2ImMessageReceiveV1 , MentionEvent , ReplyMessageRequest , \
12
- ReplyMessageRequestBody , GetMessageResourceRequest
9
+ from lark_oapi import (AUTHORIZATION , CONTENT_TYPE , LARK_REQUEST_NONCE ,
10
+ LARK_REQUEST_SIGNATURE , LARK_REQUEST_TIMESTAMP ,
11
+ USER_AGENT , UTF_8 , X_REQUEST_ID , X_TT_LOGID ,
12
+ Content_Disposition , RawRequest , RawResponse )
13
+ from lark_oapi .api .im .v1 import (GetChatRequest , GetMessageResourceRequest ,
14
+ MentionEvent , P2ImMessageReceiveV1 ,
15
+ ReplyMessageRequest , ReplyMessageRequestBody )
13
16
14
17
from web .config .env import HuixiangDouEnv
15
18
from web .constant import biz_constant
16
- from web .model .base import standard_error_response , BaseBody
17
- from web .model .chat import ChatRequestBody , ChatType , LarkChatDetail , ChatQueryInfo , WechatRequest , WechatType , \
18
- WechatPollItem , WechatResponse
19
+ from web .model .base import BaseBody , standard_error_response
20
+ from web .model .chat import (ChatQueryInfo , ChatRequestBody , ChatType ,
21
+ LarkChatDetail , WechatPollItem , WechatRequest ,
22
+ WechatResponse , WechatType )
19
23
from web .service import qalib
20
24
from web .service .cache import ChatCache
21
25
from web .service .chat import ChatService
@@ -79,7 +83,7 @@ def get_event_handler(cls):
79
83
HuixiangDouEnv .get_lark_encrypt_key (),
80
84
HuixiangDouEnv .get_lark_verification_token (),
81
85
lark .LogLevel .DEBUG ).register_p2_im_message_receive_v1 (
82
- cls ._on_im_message_received ).build ()
86
+ cls ._on_im_message_received ).build ()
83
87
84
88
@classmethod
85
89
def _on_im_message_received (cls , data : P2ImMessageReceiveV1 ):
@@ -123,7 +127,9 @@ def _on_im_message_received(cls, data: P2ImMessageReceiveV1):
123
127
ChatCache .mark_agent_used (app_id , ChatType .LARK )
124
128
125
129
if msg .root_id or msg .parent_id :
126
- logger .debug (f"[lark] app_id: { app_id } , name: { chat_name } got reply message, omit" )
130
+ logger .debug (
131
+ f'[lark] app_id: { app_id } , name: { chat_name } got reply message, omit'
132
+ )
127
133
return
128
134
129
135
# parse lark content
@@ -142,8 +148,11 @@ def _on_im_message_received(cls, data: P2ImMessageReceiveV1):
142
148
if len (lark_content .images ) > 0 :
143
149
query_id = chat_svc .generate_query_id (lark_content .content )
144
150
for index in range (len (lark_content .images )):
145
- image_store_path = chat_svc .gen_image_store_path (query_id , str (index ), ChatType .LARK )
146
- if cls ._store_image (client , message_id , lark_content .images [index ], image_store_path ):
151
+ image_store_path = chat_svc .gen_image_store_path (
152
+ query_id , str (index ), ChatType .LARK )
153
+ if cls ._store_image (client , message_id ,
154
+ lark_content .images [index ],
155
+ image_store_path ):
147
156
# replace image_key with actually store path
148
157
lark_content .images [index ] = image_store_path
149
158
@@ -153,7 +162,7 @@ def _on_im_message_received(cls, data: P2ImMessageReceiveV1):
153
162
chat_detail = LarkChatDetail (appId = app_id ,
154
163
appSecret = app_secret ,
155
164
messageId = msg .message_id )
156
- unique_id = data .event .sender .sender_id .open_id + "@" + chat_id
165
+ unique_id = data .event .sender .sender_id .open_id + '@' + chat_id
157
166
chat_svc .chat_by_agent (lark_content , ChatType .LARK , chat_detail ,
158
167
unique_id , query_id )
159
168
@@ -241,8 +250,10 @@ def _get_content_type_when_at_user_exists(
241
250
return LarkContentType .AT_OTHER_PERSON_TEXT
242
251
243
252
@classmethod
244
- def _store_image (cls , client : lark .client , message_id : str , image_key : str , path : str ) -> bool :
245
- body = GetMessageResourceRequest .builder ().message_id (message_id ).file_key (image_key ).build ()
253
+ def _store_image (cls , client : lark .client , message_id : str , image_key : str ,
254
+ path : str ) -> bool :
255
+ body = GetMessageResourceRequest .builder ().message_id (
256
+ message_id ).file_key (image_key ).build ()
246
257
response = client .im .v1 .message_resource .get (body )
247
258
if not response .success ():
248
259
logger .error (
@@ -329,7 +340,7 @@ def action(cls, body: WechatRequest,
329
340
chat_request_body = ChatRequestBody (content = body .query .content )
330
341
331
342
# push into chat queue
332
- unique_id = body .username + "@" + body .groupname
343
+ unique_id = body .username + '@' + body .groupname
333
344
chat_svc .chat_by_agent (chat_request_body , ChatType .WECHAT , body ,
334
345
unique_id , query_id )
335
346
# record query_id
@@ -369,7 +380,7 @@ def _fetch_response(cls, feature_store_id: str) -> WechatResponse:
369
380
l .append (
370
381
WechatPollItem (req = WechatRequest .model_validate_json (
371
382
json .dumps (item .detail )),
372
- rsp = item .response ))
383
+ rsp = item .response ))
373
384
complete_query_id_list .append (item .queryId )
374
385
ret .root = l
375
386
0 commit comments