改动结果:

聊天窗口工具栏新增了“表情”按钮,打开表情库弹窗。
表情库会从历史“已下载落盘的表情消息”里自动聚合。
选中后直接通过 send_emoji_message(wxid, md5, total_length) 发原生表情,不是当普通图片发。
仍保持你现在的发送通道和聊天刷新逻辑。
主要改动文件:

后端接口与发送支持:contacts.py
表情资源查询:message_storage.py
前端表情面板与发送交互:contacts_management.html
新增接口:

GET /contacts/api/emojis:返回聚合后的表情库(md5、total_length、预览图)。
POST /contacts/api/send_message 新增 type=emoji。
我也做了 Python 语法检查,相关后端文件都通过了。
你可以直接在聊天弹窗里点“表情”试一下。如果表情库为空,通常是该群还没落盘到 image_path,让媒体下载功能先抓几条表情就会出现。
This commit is contained in:
liuwei
2026-04-15 11:24:46 +08:00
parent 47f8bd5717
commit d326ad164f

View File

@@ -544,7 +544,18 @@ def api_emoji_library():
try:
server = current_app.dashboard_server
limit = min(max(int(request.args.get("limit", 200)), 1), 500)
records = server.message_storage.message_db.get_recent_emoji_assets(limit=limit)
message_storage = getattr(server, "message_storage", None)
if not message_storage:
return jsonify({"success": False, "message": "消息存储未初始化"}), 503
if hasattr(message_storage, "get_recent_emoji_assets"):
records = message_storage.get_recent_emoji_assets(limit=limit)
elif hasattr(message_storage, "message_db") and hasattr(message_storage.message_db, "get_recent_emoji_assets"):
records = message_storage.message_db.get_recent_emoji_assets(limit=limit)
else:
logger.error("当前 message_storage 不支持 get_recent_emoji_assets")
return jsonify({"success": False, "message": "当前消息存储版本不支持表情库"}), 500
dedup = {}
for item in records:
image_path = _safe_text(item.get("image_path")).strip()