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