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