import time import json from itertools import chain from celery import shared_task from celery import Task from app.utils import * @shared_task(ignore_result=False) def add(a: int, b: int) -> int: return a + b @shared_task() def block() -> None: time.sleep(5) @shared_task(bind=True, ignore_result=False) def process(self: Task, total: int) -> object: for i in range(total): self.update_state(state="PROGRESS", meta={"current": i + 1, "total": total}) time.sleep(1) return {"current": total, "total": total} @shared_task(include_result=False) def process_message_callback(client, bitable_token, table_id, cache_dir, data) -> None: record = {} images = [] images_token = [] message_content = "" message_type = data.event.message.message_type content = json.loads(data.event.message.content) if message_type == "post": content = content["content"] for item in chain.from_iterable(content): if item.get("tag") == "text": message_content += item["text"] if item.get("tag") == "img": images.append(item["image_key"]) if message_type == "text": message_content = content["text"].replace("@_user_1", "").strip() sender_id = data.event.sender.sender_id.open_id record["问题概述"] = message_content record["创建人"] = sender_id message_id = data.event.message.message_id # 对 image_key 处理并并上传至多维表格 for image in images: image_path = get_message_resource(client, message_id, image, "image", cache_dir) print("下载文件成功:", image, image_path) file_token = upload_media(client, image_path, "bitable_image", bitable_token) print("上传文件成功:", file_token) images_token.append(file_token) if images: record["附件"] = [{"file_token": image} for image in images_token] record_id = add_record(client, bitable_token, table_id, record) time.sleep(1) update_data = {"创建人": {"id": sender_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(client, message_id, content)