diff --git a/admin/dashboard/blueprints/contacts.py b/admin/dashboard/blueprints/contacts.py index 20d308f..5d690e2 100644 --- a/admin/dashboard/blueprints/contacts.py +++ b/admin/dashboard/blueprints/contacts.py @@ -158,7 +158,7 @@ def api_head_images(): @login_required def api_group_members(roomid): """获取指定群的成员列表API - + Args: roomid: 群ID """ @@ -197,7 +197,7 @@ def api_contacts_update(): @login_required def api_send_message(): """发送消息API - + 支持的消息类型: - text: 文本消息 - image: 图片消息 @@ -216,17 +216,13 @@ def api_send_message(): # 获取机器人实例 server = current_app.dashboard_server - if not server or not server.client: + if not server or not server.robot: return jsonify({'success': False, 'message': '机器人未初始化'}) - # 创建事件循环 - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - # 根据消息类型调用不同的发送方法 if msg_type == 'text': - client_msg_id, create_time, new_msg_id = loop.run_until_complete( - server.client.send_text_message(wxid, content) + client_msg_id, create_time, new_msg_id = asyncio.run( + server.robot.send_text_message(wxid, content) ) return jsonify({ 'success': True, @@ -236,13 +232,13 @@ def api_send_message(): 'new_msg_id': new_msg_id } }) - + elif msg_type == 'image': if 'file' not in request.files: return jsonify({'success': False, 'message': '未上传文件'}) file = request.files['file'] - client_msg_id, create_time, new_msg_id = loop.run_until_complete( - server.client.send_image_message(wxid, file.read()) + client_msg_id, create_time, new_msg_id = asyncio.run( + server.robot.send_image_message(wxid, file.read()) ) return jsonify({ 'success': True, @@ -252,13 +248,13 @@ def api_send_message(): 'new_msg_id': new_msg_id } }) - + elif msg_type == 'voice': if 'file' not in request.files: return jsonify({'success': False, 'message': '未上传文件'}) file = request.files['file'] - client_msg_id, create_time, new_msg_id = loop.run_until_complete( - server.client.send_voice_message(wxid, file.read()) + client_msg_id, create_time, new_msg_id = asyncio.run( + server.robot.send_voice_message(wxid, file.read()) ) return jsonify({ 'success': True, @@ -268,13 +264,13 @@ def api_send_message(): 'new_msg_id': new_msg_id } }) - + elif msg_type == 'video': if 'file' not in request.files: return jsonify({'success': False, 'message': '未上传文件'}) file = request.files['file'] - client_msg_id, new_msg_id = loop.run_until_complete( - server.client.send_video_message(wxid, file.read()) + client_msg_id, new_msg_id = asyncio.run( + server.robot.send_video_message(wxid, file.read()) ) return jsonify({ 'success': True, @@ -283,13 +279,13 @@ def api_send_message(): 'new_msg_id': new_msg_id } }) - + elif msg_type == 'link': url = content.get('url') title = content.get('title', '') description = content.get('description', '') - client_msg_id, create_time, new_msg_id = loop.run_until_complete( - server.client.send_link_message(wxid, url, title, description) + client_msg_id, create_time, new_msg_id = asyncio.run( + server.robot.send_link_message(wxid, url, title, description) ) return jsonify({ 'success': True, @@ -299,12 +295,10 @@ def api_send_message(): 'new_msg_id': new_msg_id } }) - + else: return jsonify({'success': False, 'message': '不支持的消息类型'}) except Exception as e: logger.error(f"发送消息失败: {e}") return jsonify({'success': False, 'message': str(e)}), 500 - finally: - loop.close()