From 93f9e864dd47211cdd8ae6c7abcd93f231cdb1eb Mon Sep 17 00:00:00 2001 From: woni <320753691@qq.com> Date: Wed, 17 Jan 2024 18:40:01 +0800 Subject: [PATCH] refresh user id --- app/demo.py | 105 ++++++++------------------------------------- app/utils.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 135 insertions(+), 89 deletions(-) diff --git a/app/demo.py b/app/demo.py index b9a72dd..1aed858 100644 --- a/app/demo.py +++ b/app/demo.py @@ -1,5 +1,8 @@ import os import json + +import time + from itertools import chain import lark_oapi as lark @@ -11,7 +14,13 @@ from lark_oapi.api.im.v1 import * from lark_oapi.api.bitable.v1 import * -from utils import get_message_resource, upload_media +from utils import ( + get_message_resource, + upload_media, + add_record, + update_record, + send_group_message, +) load_dotenv() @@ -64,7 +73,7 @@ def do_p2_im_message_receive_v1(data: P2ImMessageReceiveV1) -> None: record["创建人"] = data.event.sender.sender_id.open_id receive_open_id = data.event.sender.sender_id.open_id message_id = data.event.message.message_id - user_id = data.event.sender.sender_id.user_id + # user_id = data.event.sender.sender_id.user_id # 对 image_key 处理并并上传至多维表格 images_path = [] @@ -81,14 +90,18 @@ def do_p2_im_message_receive_v1(data: P2ImMessageReceiveV1) -> None: if images: record["附件"] = [{"file_token": image} for image in images_token] - add_record(record) + record_id = add_record(client, bitable_token, table_id, record) + time.sleep(1) + + update_data = {"创建人": [{"id": receive_open_id}]} + update_record(client, bitable_token, table_id, record_id, update_data) # content = {"text": "反馈的问题已经记录到多维表格, 稍后有小伙伴跟进"} # send_message(receive_id, content) # 回复群组的消息 content = f'{{"text": "反馈的问题已经记录到多维表格, 稍后有小伙伴跟进"}}' - send_group_message(message_id, content) + send_group_message(client, message_id, content) def do_customized_event(data: lark.CustomizedEvent) -> None: @@ -105,90 +118,6 @@ handler = ( ) -def add_record(data): - # 构造请求对象 - request: CreateAppTableRecordRequest = ( - CreateAppTableRecordRequest.builder() - .app_token(bitable_token) - .table_id(table_id) - .request_body(AppTableRecord.builder().fields(data).build()) - .build() - ) - - # 发起请求 - response: CreateAppTableRecordResponse = client.bitable.v1.app_table_record.create( - request - ) - - # 处理失败返回 - if not response.success(): - lark.logger.error( - f"client.bitable.v1.app_table_record.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" - ) - return - - # 处理业务结果 - lark.logger.info(lark.JSON.marshal(response.data, indent=4)) - - -def send_group_message(message_id, content): - # 构造请求对象 - - request: ReplyMessageRequest = ( - ReplyMessageRequest.builder() - .message_id(message_id) - .request_body( - ReplyMessageRequestBody.builder() - .content(content=content) - .msg_type("text") - .reply_in_thread(True) - .build() - ) - .build() - ) - - # 发起请求 - response: ReplyMessageResponse = client.im.v1.message.reply(request) - - # 处理失败返回 - if not response.success(): - lark.logger.error( - f"client.im.v1.message.reply failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" - ) - - # 处理业务结果 - lark.logger.info(lark.JSON.marshal(response.data, indent=4)) - - -def send_message(receive_id, content): - # 构造请求对象 - request: CreateMessageRequest = ( - CreateMessageRequest.builder() - .receive_id_type("open_id") - .request_body( - CreateMessageRequestBody.builder() - .receive_id(receive_id) - .msg_type("text") - .content(content) - .build() - ) - .build() - ) - - # 发起请求 - response: CreateMessageResponse = client.im.v1.message.create(request) - - # 处理失败返回 - if not response.success(): - lark.logger.error( - f"client.im.v1.message.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" - ) - return - - # 处理业务结果 - lark.logger.info(lark.JSON.marshal(response.data, indent=4)) - - @app.route("/event", methods=["POST"]) def event(): resp = handler.do(parse_req()) diff --git a/app/utils.py b/app/utils.py index faa4c57..b837136 100644 --- a/app/utils.py +++ b/app/utils.py @@ -13,6 +13,66 @@ import lark_oapi as lark from lark_oapi.api.drive.v1 import * +def update_record(client, bitable_token, table_id, record_id, data): + # 构造请求对象 + request: UpdateAppTableRecordRequest = ( + UpdateAppTableRecordRequest.builder() + .app_token(bitable_token) + .table_id(table_id) + .record_id(record_id) + .request_body(AppTableRecord.builder().fields(data).build()) + .build() + ) + + # 发起请求 + option = ( + lark.RequestOption.builder() + .user_access_token("u-fEsiJAcUZaOFrBI0iYa6N61l4zvBghNxr200l1K82GvD") + .build() + ) + response: UpdateAppTableRecordResponse = client.bitable.v1.app_table_record.update( + request, option + ) + + # 处理失败返回 + if not response.success(): + lark.logger.error( + f"client.bitable.v1.app_table_record.update failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" + ) + return + + # 处理业务结果 + lark.logger.info(lark.JSON.marshal(response.data, indent=4)) + + +def add_record(client, bitable_token, table_id, data): + # 构造请求对象 + request: CreateAppTableRecordRequest = ( + CreateAppTableRecordRequest.builder() + .app_token(bitable_token) + .table_id(table_id) + .request_body(AppTableRecord.builder().fields(data).build()) + .build() + ) + + # 发起请求 + response: CreateAppTableRecordResponse = client.bitable.v1.app_table_record.create( + request + ) + + # 处理失败返回 + if not response.success(): + lark.logger.error( + f"client.bitable.v1.app_table_record.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" + ) + return + + # 处理业务结果 + lark.logger.info(lark.JSON.marshal(response.data, indent=4)) + + return response.data.record.record_id + + def get_message_resource(client, message_id, file_key, file_type, save_dir): request: GetMessageResourceRequest = ( GetMessageResourceRequest.builder() @@ -58,7 +118,6 @@ def upload_media(client, file_path, parent_type, parent_node): .build() ) - # 发起请求 option = ( lark.RequestOption.builder() @@ -80,3 +139,61 @@ def upload_media(client, file_path, parent_type, parent_node): lark.logger.info(lark.JSON.marshal(response.data, indent=4)) return response.data.file_token + + +def send_group_message(client, message_id, content): + # 构造请求对象 + + request: ReplyMessageRequest = ( + ReplyMessageRequest.builder() + .message_id(message_id) + .request_body( + ReplyMessageRequestBody.builder() + .content(content=content) + .msg_type("text") + .reply_in_thread(True) + .build() + ) + .build() + ) + + # 发起请求 + response: ReplyMessageResponse = client.im.v1.message.reply(request) + + # 处理失败返回 + if not response.success(): + lark.logger.error( + f"client.im.v1.message.reply failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" + ) + + # 处理业务结果 + lark.logger.info(lark.JSON.marshal(response.data, indent=4)) + + +def send_message(client, receive_id, content): + # 构造请求对象 + request: CreateMessageRequest = ( + CreateMessageRequest.builder() + .receive_id_type("open_id") + .request_body( + CreateMessageRequestBody.builder() + .receive_id(receive_id) + .msg_type("text") + .content(content) + .build() + ) + .build() + ) + + # 发起请求 + response: CreateMessageResponse = client.im.v1.message.create(request) + + # 处理失败返回 + if not response.success(): + lark.logger.error( + f"client.im.v1.message.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}" + ) + return + + # 处理业务结果 + lark.logger.info(lark.JSON.marshal(response.data, indent=4))