mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
feat: post image http url
This commit is contained in:
parent
0f84e82d74
commit
03d4a68c33
@ -41,7 +41,7 @@ LiteLoaderQQNT的OneBot11协议插件
|
||||
- [x] 图片
|
||||
- [x] 引用消息
|
||||
- [x] @群成员
|
||||
- [x] 语音
|
||||
- [x] 语音(支持mp3、wav等多种音频格式直接发送)
|
||||
- [x] json消息(只上报)
|
||||
- [x] 转发消息记录(目前只能发不能收)
|
||||
- [ ] 红包
|
||||
|
@ -33,7 +33,7 @@ export class ConfigUtil {
|
||||
ob11: ob11Default,
|
||||
heartInterval: 60000,
|
||||
token: "",
|
||||
enableBase64: false,
|
||||
enableLocalFile2Url: false,
|
||||
debug: false,
|
||||
log: false,
|
||||
reportSelfMessage: false
|
||||
|
@ -13,7 +13,7 @@ export interface Config {
|
||||
ob11: OB11Config
|
||||
token?: string
|
||||
heartInterval?: number // ms
|
||||
enableBase64?: boolean
|
||||
enableLocalFile2Url?: boolean // 开启后,本地文件路径图片会转成http链接, 语音会转成base64
|
||||
debug?: boolean
|
||||
reportSelfMessage?: boolean
|
||||
log?: boolean
|
||||
|
@ -82,7 +82,7 @@ function onLoad() {
|
||||
})
|
||||
|
||||
|
||||
function postRawMsg(msgList: RawMessage[]) {
|
||||
function postReceiveMsg(msgList: RawMessage[]) {
|
||||
const {debug, reportSelfMessage} = getConfigUtil().getConfig();
|
||||
for (let message of msgList) {
|
||||
// log("收到新消息", message)
|
||||
@ -107,7 +107,7 @@ function onLoad() {
|
||||
async function start() {
|
||||
registerReceiveHook<{ msgList: Array<RawMessage> }>(ReceiveCmd.NEW_MSG, (payload) => {
|
||||
try {
|
||||
postRawMsg(payload.msgList);
|
||||
postReceiveMsg(payload.msgList);
|
||||
} catch (e) {
|
||||
log("report message error: ", e.toString());
|
||||
}
|
||||
@ -152,7 +152,7 @@ function onLoad() {
|
||||
}
|
||||
// log("reportSelfMessage", payload)
|
||||
try {
|
||||
postRawMsg([payload.msgRecord]);
|
||||
postReceiveMsg([payload.msgRecord]);
|
||||
} catch (e) {
|
||||
log("report self message error: ", e.toString());
|
||||
}
|
||||
|
@ -1,4 +1,12 @@
|
||||
import {OB11Group, OB11GroupMember, OB11GroupMemberRole, OB11Message, OB11MessageDataType, OB11User} from "./types";
|
||||
import {
|
||||
OB11Group,
|
||||
OB11GroupMember,
|
||||
OB11GroupMemberRole,
|
||||
OB11Message,
|
||||
OB11MessageData,
|
||||
OB11MessageDataType,
|
||||
OB11User
|
||||
} from "./types";
|
||||
import {AtType, ChatType, Group, GroupMember, IMAGE_HTTP_HOST, RawMessage, SelfInfo, User} from '../ntqqapi/types';
|
||||
import {getFriend, getGroupMember, getHistoryMsgBySeq, selfInfo} from '../common/data';
|
||||
import {file2base64, getConfigUtil, log} from "../common/utils";
|
||||
@ -8,7 +16,7 @@ import {NTQQApi} from "../ntqqapi/ntcall";
|
||||
export class OB11Constructor {
|
||||
static async message(msg: RawMessage): Promise<OB11Message> {
|
||||
|
||||
const {enableBase64} = getConfigUtil().getConfig()
|
||||
const {enableLocalFile2Url} = getConfigUtil().getConfig()
|
||||
const message_type = msg.chatType == ChatType.group ? "group" : "private";
|
||||
const resMsg: OB11Message = {
|
||||
self_id: parseInt(selfInfo.uin),
|
||||
@ -47,7 +55,7 @@ export class OB11Constructor {
|
||||
}
|
||||
|
||||
for (let element of msg.elements) {
|
||||
let message_data: any = {
|
||||
let message_data: OB11MessageData | any = {
|
||||
data: {},
|
||||
type: "unknown"
|
||||
}
|
||||
@ -78,11 +86,11 @@ export class OB11Constructor {
|
||||
message_data["data"]["file_id"] = element.picElement.fileUuid
|
||||
message_data["data"]["path"] = element.picElement.sourcePath
|
||||
message_data["data"]["file"] = element.picElement.sourcePath
|
||||
message_data["data"]["http_file"] = IMAGE_HTTP_HOST + element.picElement.originImageUrl
|
||||
try {
|
||||
await NTQQApi.downloadMedia(msg.msgId, msg.chatType, msg.peerUid,
|
||||
element.elementId, element.picElement.thumbPath.get(0), element.picElement.sourcePath)
|
||||
} catch (e) {
|
||||
message_data["data"]["http_file"] = IMAGE_HTTP_HOST + element.picElement.originImageUrl
|
||||
}
|
||||
} else if (element.replyElement) {
|
||||
message_data["type"] = "reply"
|
||||
@ -96,7 +104,8 @@ export class OB11Constructor {
|
||||
message_data["type"] = OB11MessageDataType.voice;
|
||||
message_data["data"]["file"] = element.pttElement.filePath
|
||||
message_data["data"]["file_id"] = element.pttElement.fileUuid
|
||||
// console.log("收到语音消息", message.raw.msgId, message.peer, element.pttElement)
|
||||
|
||||
// log("收到语音消息", msg)
|
||||
// window.LLAPI.Ptt2Text(message.raw.msgId, message.peer, messages).then(text => {
|
||||
// console.log("语音转文字结果", text);
|
||||
// }).catch(err => {
|
||||
@ -109,20 +118,23 @@ export class OB11Constructor {
|
||||
message_data["type"] = OB11MessageDataType.face;
|
||||
message_data["data"]["id"] = element.faceElement.faceIndex.toString();
|
||||
}
|
||||
if (message_data.data.file) {
|
||||
let filePath: string = message_data.data.file;
|
||||
if (!enableLocalFile2Url) {
|
||||
message_data.data.file = "file://" + filePath
|
||||
} else { // 不使用本地路径
|
||||
if (message_data.data.http_file) {
|
||||
message_data.data.file = message_data.data.http_file
|
||||
} else if (message_data.data.file) {
|
||||
let filePath: string = message_data.data.file;
|
||||
message_data.data.file = "file://" + filePath
|
||||
if (enableBase64) {
|
||||
} else {
|
||||
let {err, data} = await file2base64(filePath);
|
||||
if (err) {
|
||||
console.log("文件转base64失败", err)
|
||||
log("文件转base64失败", filePath, err)
|
||||
} else {
|
||||
message_data.data.file = "base64://" + data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (message_data.type !== "unknown" && message_data.data) {
|
||||
resMsg.message.push(message_data);
|
||||
}
|
||||
|
@ -102,7 +102,8 @@ export interface OB11MessageText {
|
||||
|
||||
interface OB11MessageFileBase {
|
||||
data: {
|
||||
file: string
|
||||
file: string,
|
||||
http_file?: string;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,10 +108,10 @@ async function onSettingWindowCreated(view: Element) {
|
||||
<setting-panel>
|
||||
<setting-item data-direction="row" class="hostItem vertical-list-item">
|
||||
<div>
|
||||
<div>上报文件进行base64编码</div>
|
||||
<div class="tips">不开启时,上报文件将以本地路径形式发送</div>
|
||||
<div>上报文件不采用本地路径</div>
|
||||
<div class="tips">开启后,上报图片为http连接,语音为base64编码</div>
|
||||
</div>
|
||||
<setting-switch id="switchBase64" ${config.enableBase64 ? "is-active" : ""}></setting-switch>
|
||||
<setting-switch id="switchFileUrl" ${config.enableLocalFile2Url ? "is-active" : ""}></setting-switch>
|
||||
</setting-item>
|
||||
<setting-item data-direction="row" class="hostItem vertical-list-item">
|
||||
<div>
|
||||
@ -208,7 +208,7 @@ async function onSettingWindowCreated(view: Element) {
|
||||
switchClick("websocket", "enableWs", config.ob11);
|
||||
switchClick("websocketReverse", "enableWsReverse", config.ob11);
|
||||
switchClick("debug", "debug");
|
||||
switchClick("switchBase64", "enableBase64");
|
||||
switchClick("switchFileUrl", "enableLocalFile2Url");
|
||||
switchClick("reportSelfMessage", "reportSelfMessage");
|
||||
switchClick("log", "log");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user