const API = require('../../../lib/API') const { BaseStdResponse } = require('../../../BaseStdResponse') const AccessControl = require('../../../lib/AccessControl') const OneBotV11 = require('../../../plugin/OneBot/OneBotV11') const { ConversationService } = require('../../../lib/AIChat/ConversationService') class SendMessage extends API { constructor() { super() this.setPath('/AIChat/Message') this.setMethod('POST') } async onRequest(req, res) { const { uuid, session, conversation_id, content, images = [] } = req.body if ([uuid, session, conversation_id].some(v => v === '' || v === null || v === undefined)) { return res.json({ ...BaseStdResponse.MISSING_PARAMETER }) } if (!await AccessControl.checkSession(uuid, session)) { return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED }) } const saved = await ConversationService.addUserMessage({ uuid, conversationId: conversation_id, content, images }) if (!saved) return res.json({ ...BaseStdResponse.ERR, msg: '会话不存在或无权发送' }) if (saved.missingContent) return res.json({ ...BaseStdResponse.MISSING_PARAMETER, msg: '请输入消息或上传图片' }) res.json({ ...BaseStdResponse.OK, data: { message_id: saved.messageId } }) try { await OneBotV11.sendAiChatMessage({ conversationId: saved.conversationId, conversationNo: saved.conversationNo, senderUuid: uuid, content: saved.content, images: saved.images }) } catch (err) { this.logger.error(`AIChat OneBot 转发失败: ${err.stack || err}`) await ConversationService.addSystemMessage({ conversationId: saved.conversationId, content: '消息已保存,但暂时无法连接小妍助理,请稍后再试。', status: 'error', errorMsg: err.message || 'OneBot send failed' }) } } } module.exports.SendMessage = SendMessage