onebots 0.4.63 → 0.4.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/adapter.d.ts +1 -1
- package/lib/adapter.js +6 -5
- package/lib/adapters/dingtalk/index.d.ts +1 -1
- package/lib/adapters/dingtalk/index.js +9 -2
- package/lib/adapters/icqq/index.d.ts +2 -2
- package/lib/adapters/icqq/index.js +13 -70
- package/lib/adapters/icqq/utils.d.ts +4 -6
- package/lib/adapters/icqq/utils.js +63 -21
- package/lib/adapters/qq/index.d.ts +1 -1
- package/lib/adapters/qq/index.js +9 -2
- package/lib/adapters/wechat/index.d.ts +1 -1
- package/lib/adapters/wechat/index.js +9 -2
- package/lib/db.js +1 -1
- package/lib/server/app.js +9 -4
- package/lib/service/V11/index.js +2 -3
- package/lib/service/V12/action/common.d.ts +1 -0
- package/lib/service/V12/action/common.js +3 -0
- package/lib/service/V12/index.d.ts +1 -0
- package/lib/service/V12/index.js +13 -1
- package/package.json +9 -5
- /package/lib/{service → adapters/icqq}/shareMusicCustom.d.ts +0 -0
- /package/lib/{service → adapters/icqq}/shareMusicCustom.js +0 -0
package/lib/adapter.d.ts
CHANGED
|
@@ -46,7 +46,7 @@ export interface Adapter<T extends string = string, Sendable = any> extends Adap
|
|
|
46
46
|
export declare namespace Adapter {
|
|
47
47
|
interface Base<Sendable = any> {
|
|
48
48
|
toSegment<V extends OneBot.Version>(version: V, message: Sendable): OneBot.Segment<V>[];
|
|
49
|
-
fromSegment<V extends OneBot.Version>(version: V, segment: OneBot.Segment<V>[]): Sendable;
|
|
49
|
+
fromSegment<V extends OneBot.Version>(onebot: OneBot, version: V, segment: OneBot.Segment<V>[]): Sendable;
|
|
50
50
|
getSelfInfo<V extends OneBot.Version>(uin: string, version: V): OneBot.SelfInfo<V>;
|
|
51
51
|
/** 格式化事件 */
|
|
52
52
|
formatEventPayload<V extends OneBot.Version>(uin: string, version: V, event: string, payload: Dict): OneBot.Payload<V>;
|
package/lib/adapter.js
CHANGED
|
@@ -63,7 +63,7 @@ class Adapter extends events_1.EventEmitter {
|
|
|
63
63
|
.join("");
|
|
64
64
|
}
|
|
65
65
|
fromCqcode(version, message) {
|
|
66
|
-
const regExpMatchArray = message.match(/\[CQ:([a-z]+),([
|
|
66
|
+
const regExpMatchArray = message.match(/\[CQ:([a-z]+),([^\]]+)]/);
|
|
67
67
|
if (!regExpMatchArray)
|
|
68
68
|
return [
|
|
69
69
|
{
|
|
@@ -75,10 +75,10 @@ class Adapter extends events_1.EventEmitter {
|
|
|
75
75
|
];
|
|
76
76
|
const result = [];
|
|
77
77
|
while (message.length) {
|
|
78
|
-
const [match] = message.match(/\[CQ:([a-z]+),([
|
|
78
|
+
const [match] = message.match(/\[CQ:([a-z]+),([^\]]+)]/) || [];
|
|
79
79
|
if (!match)
|
|
80
80
|
break;
|
|
81
|
-
const prevText = message.substring(0, match
|
|
81
|
+
const prevText = message.substring(0, message.indexOf(match));
|
|
82
82
|
if (prevText) {
|
|
83
83
|
result.push({
|
|
84
84
|
type: "text",
|
|
@@ -89,9 +89,10 @@ class Adapter extends events_1.EventEmitter {
|
|
|
89
89
|
}
|
|
90
90
|
const [type, ...valueArr] = match.substring(1, match.length - 1).split(",");
|
|
91
91
|
result.push({
|
|
92
|
-
type: type,
|
|
92
|
+
type: type.split(":").at(-1),
|
|
93
93
|
data: Object.fromEntries(valueArr.map(item => {
|
|
94
|
-
const [key,
|
|
94
|
+
const [key, ...values] = item.split("=");
|
|
95
|
+
const value = values.join("=");
|
|
95
96
|
return [key, type === "reply" && key === "id" ? +value : value];
|
|
96
97
|
})),
|
|
97
98
|
});
|
|
@@ -17,7 +17,7 @@ export default class DingtalkAdapter extends Adapter<"dingtalk", Sendable> {
|
|
|
17
17
|
sendPrivateMessage<V extends OneBot.Version>(uin: string, version: V, args: [string, Sendable, string]): Promise<OneBot.MessageRet<V>>;
|
|
18
18
|
sendGroupMessage<V extends OneBot.Version>(uin: string, version: V, args: [string, Sendable, string]): Promise<OneBot.MessageRet<V>>;
|
|
19
19
|
deleteMessage(uin: string, message_id: string): Promise<boolean>;
|
|
20
|
-
fromSegment<V extends OneBot.Version>(version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
20
|
+
fromSegment<V extends OneBot.Version>(onebot: OneBot<Bot>, version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
21
21
|
toSegment<V extends OneBot.Version>(version: V, message: Sendable): OneBot.Segment<V>[];
|
|
22
22
|
fromCqcode<V extends OneBot.Version>(version: V, message: string): OneBot.Segment<V>[];
|
|
23
23
|
formatEventPayload<V extends OneBot.Version>(uin: string, version: V, event: string, data: any): OneBot.Payload<V>;
|
|
@@ -139,8 +139,15 @@ class DingtalkAdapter extends adapter_1.Adapter {
|
|
|
139
139
|
throw new Error(`暂不支持撤回${from_type}类型的消息`);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
fromSegment(version, segment) {
|
|
143
|
-
return []
|
|
142
|
+
fromSegment(onebot, version, segment) {
|
|
143
|
+
return []
|
|
144
|
+
.concat(segment)
|
|
145
|
+
.map(segment => {
|
|
146
|
+
if (version === "V12" && ["image", "video", "audio"].includes(segment.type))
|
|
147
|
+
return onebot.V12.transformMedia(segment);
|
|
148
|
+
return segment;
|
|
149
|
+
})
|
|
150
|
+
.map(item => {
|
|
144
151
|
if (typeof item === "string")
|
|
145
152
|
return item;
|
|
146
153
|
const { type, data } = item;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Adapter } from "../../adapter";
|
|
2
2
|
import { App } from "../../server/app";
|
|
3
|
-
import { Config as IcqqConfig, Sendable } from "@icqqjs/icqq";
|
|
3
|
+
import { Client, Config as IcqqConfig, Sendable } from "@icqqjs/icqq";
|
|
4
4
|
import { OneBot } from "../../onebot";
|
|
5
5
|
export default class IcqqAdapter extends Adapter<"icqq", Sendable> {
|
|
6
6
|
#private;
|
|
@@ -16,7 +16,7 @@ export default class IcqqAdapter extends Adapter<"icqq", Sendable> {
|
|
|
16
16
|
sendGuildMessage<V extends OneBot.Version>(uin: string, version: V, args: [string, Sendable, string?]): Promise<OneBot.MessageRet<V>>;
|
|
17
17
|
getMessage<V extends OneBot.Version>(uin: string, version: V, [message_id]: [string]): Promise<OneBot.Message<V>>;
|
|
18
18
|
call<V extends OneBot.Version>(uin: string, version: V, method: string, args?: any[]): Promise<any>;
|
|
19
|
-
fromSegment<V extends OneBot.Version>(version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
19
|
+
fromSegment<V extends OneBot.Version>(onebot: OneBot<Client>, version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
20
20
|
toSegment<V extends OneBot.Version>(version: V, message: Sendable): OneBot.Segment<V>[];
|
|
21
21
|
getSelfInfo<V extends OneBot.Version>(uin: string, version: V): OneBot.SelfInfo<V>;
|
|
22
22
|
startOneBot(oneBot: OneBot): Promise<Function>;
|
|
@@ -45,72 +45,8 @@ const process_1 = __importDefault(require("process"));
|
|
|
45
45
|
const fs_1 = require("fs");
|
|
46
46
|
const onebot_1 = require("../../onebot");
|
|
47
47
|
const path = __importStar(require("path"));
|
|
48
|
-
const shareMusicCustom_1 = require("../../service/shareMusicCustom");
|
|
49
48
|
const message_1 = require("@icqqjs/icqq/lib/message");
|
|
50
|
-
|
|
51
|
-
let result = [];
|
|
52
|
-
for (const item of list) {
|
|
53
|
-
const { type, data, ...other } = item;
|
|
54
|
-
switch (type) {
|
|
55
|
-
case "node": {
|
|
56
|
-
result.push({
|
|
57
|
-
type,
|
|
58
|
-
...data,
|
|
59
|
-
user_id: data.user_id,
|
|
60
|
-
message: await processMessages.call(this, uin, data.user_id, "private", data.content || []),
|
|
61
|
-
});
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
case "music": {
|
|
65
|
-
if (String(item.data.platform) === "custom") {
|
|
66
|
-
item.data.platform = item.data["subtype"]; // gocq 的平台数据存储在 subtype 内,兼容 icqq 时要求前端必须发送 id 字段
|
|
67
|
-
}
|
|
68
|
-
const { type, data } = item;
|
|
69
|
-
await shareMusicCustom_1.shareMusic.call(this[target_type === "private" ? "pickFriend" : "pickGroup"](target_id), {
|
|
70
|
-
type,
|
|
71
|
-
...data,
|
|
72
|
-
});
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
case "share": {
|
|
76
|
-
await this[target_type === "private" ? "pickFriend" : "pickGroup"](target_id).shareUrl(item.data);
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
case "video":
|
|
80
|
-
case "audio":
|
|
81
|
-
case "image": {
|
|
82
|
-
if (item["file_id"]?.startsWith("base64://"))
|
|
83
|
-
item["file_id"] = Buffer.from(item["file_id"].slice(9), "base64");
|
|
84
|
-
if (item["file"]?.startsWith("base64://"))
|
|
85
|
-
item["file"] = Buffer.from(item["file"].slice(9), "base64");
|
|
86
|
-
result.push({
|
|
87
|
-
type: type,
|
|
88
|
-
...data,
|
|
89
|
-
...other,
|
|
90
|
-
});
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
case "reply": {
|
|
94
|
-
const oneBot = this.getOneBot(uin);
|
|
95
|
-
const message_id = oneBot.V11.getStrByInt("message_id", data.id);
|
|
96
|
-
const msg = await oneBot.internal.getMsg(message_id);
|
|
97
|
-
result.push({
|
|
98
|
-
type: "quote",
|
|
99
|
-
...msg,
|
|
100
|
-
});
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
default: {
|
|
104
|
-
result.push({
|
|
105
|
-
type: type,
|
|
106
|
-
...data,
|
|
107
|
-
...other,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return result;
|
|
113
|
-
}
|
|
49
|
+
const utils_1 = require("../../adapters/icqq/utils");
|
|
114
50
|
class IcqqAdapter extends adapter_1.Adapter {
|
|
115
51
|
constructor(app, config) {
|
|
116
52
|
super(app, "icqq", config);
|
|
@@ -203,7 +139,7 @@ class IcqqAdapter extends adapter_1.Adapter {
|
|
|
203
139
|
let quote;
|
|
204
140
|
if (source)
|
|
205
141
|
quote = await client.getMsg(source);
|
|
206
|
-
const result = await client.sendPrivateMsg(parseInt(user_id), await processMessages.call(this, uin, user_id, "private", message), quote);
|
|
142
|
+
const result = await client.sendPrivateMsg(parseInt(user_id), await utils_1.processMessages.call(this, uin, user_id, "private", message), quote);
|
|
207
143
|
return {
|
|
208
144
|
message_id: version === "V11"
|
|
209
145
|
? this.oneBots.get(uin).V11.transformToInt("message_id", result.message_id)
|
|
@@ -220,7 +156,7 @@ class IcqqAdapter extends adapter_1.Adapter {
|
|
|
220
156
|
let quote;
|
|
221
157
|
if (source)
|
|
222
158
|
quote = await client.getMsg(source);
|
|
223
|
-
const result = await client.sendGroupMsg(parseInt(group_id), await processMessages.call(this, uin, group_id, "group", message), quote);
|
|
159
|
+
const result = await client.sendGroupMsg(parseInt(group_id), await utils_1.processMessages.call(this, uin, group_id, "group", message), quote);
|
|
224
160
|
return {
|
|
225
161
|
message_id: version === "V11"
|
|
226
162
|
? this.oneBots.get(uin).V11.transformToInt("message_id", result.message_id)
|
|
@@ -231,7 +167,7 @@ class IcqqAdapter extends adapter_1.Adapter {
|
|
|
231
167
|
const [target_id, message, source] = args;
|
|
232
168
|
const client = this.oneBots.get(uin)?.internal;
|
|
233
169
|
const [guild_id, channel_id] = target_id.split(":");
|
|
234
|
-
const result = await client.sendGuildMsg(guild_id, channel_id, await processMessages.call(this, uin, target_id, "channel", message));
|
|
170
|
+
const result = await client.sendGuildMsg(guild_id, channel_id, await utils_1.processMessages.call(this, uin, target_id, "channel", message));
|
|
235
171
|
const message_id = `${result.seq}:${result.rand}:${result.time}`;
|
|
236
172
|
return {
|
|
237
173
|
message_id: version === "V11"
|
|
@@ -260,8 +196,15 @@ class IcqqAdapter extends adapter_1.Adapter {
|
|
|
260
196
|
throw onebot_1.OneBot.UnsupportedMethodError;
|
|
261
197
|
}
|
|
262
198
|
}
|
|
263
|
-
fromSegment(version, segment) {
|
|
264
|
-
return []
|
|
199
|
+
fromSegment(onebot, version, segment) {
|
|
200
|
+
return []
|
|
201
|
+
.concat(segment)
|
|
202
|
+
.map(segment => {
|
|
203
|
+
if (version === "V12" && ["image", "video", "audio"].includes(segment.type))
|
|
204
|
+
return onebot.V12.transformMedia(segment);
|
|
205
|
+
return segment;
|
|
206
|
+
})
|
|
207
|
+
.map(item => {
|
|
265
208
|
if (typeof item === "string")
|
|
266
209
|
return item;
|
|
267
210
|
const { type, data } = item;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
share?: ShareElem;
|
|
6
|
-
}>;
|
|
1
|
+
import { MessageElem } from "@icqqjs/icqq";
|
|
2
|
+
import { OneBot } from "../../onebot";
|
|
3
|
+
import IcqqAdapter from "../../adapters/icqq/index";
|
|
4
|
+
export declare function processMessages(this: IcqqAdapter, uin: string, target_id: number, target_type: "group" | "private", list: OneBot.Segment<OneBot.Version>[]): Promise<MessageElem[]>;
|
|
@@ -1,26 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
async function
|
|
6
|
-
let
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
exports.processMessages = void 0;
|
|
4
|
+
const shareMusicCustom_1 = require("./shareMusicCustom");
|
|
5
|
+
async function processMessages(uin, target_id, target_type, list) {
|
|
6
|
+
let result = [];
|
|
7
|
+
for (const item of list) {
|
|
8
|
+
const { type, data, ...other } = item;
|
|
9
|
+
switch (type) {
|
|
10
|
+
case "node": {
|
|
11
|
+
result.push({
|
|
12
|
+
type,
|
|
13
|
+
...data,
|
|
14
|
+
user_id: data.user_id,
|
|
15
|
+
message: await processMessages.call(this, uin, data.user_id, "private", data.content || []),
|
|
16
|
+
});
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
case "music": {
|
|
20
|
+
if (String(item.data.platform) === "custom") {
|
|
21
|
+
item.data.platform = item.data["subtype"]; // gocq 的平台数据存储在 subtype 内,兼容 icqq 时要求前端必须发送 id 字段
|
|
22
|
+
}
|
|
23
|
+
const { type, data } = item;
|
|
24
|
+
await shareMusicCustom_1.shareMusic.call(this[target_type === "private" ? "pickFriend" : "pickGroup"](target_id), {
|
|
25
|
+
type,
|
|
26
|
+
...data,
|
|
27
|
+
});
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
case "share": {
|
|
31
|
+
await this[target_type === "private" ? "pickFriend" : "pickGroup"](target_id).shareUrl(item.data);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case "video":
|
|
35
|
+
case "audio":
|
|
36
|
+
case "image": {
|
|
37
|
+
item["file"] = item["file"] || item["file_id"] || item["url"];
|
|
38
|
+
if (item["file"]?.startsWith("base64://"))
|
|
39
|
+
item["file"] = Buffer.from(item["file"].slice(9), "base64");
|
|
40
|
+
result.push({
|
|
41
|
+
type: type,
|
|
42
|
+
...data,
|
|
43
|
+
...other,
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case "reply": {
|
|
48
|
+
const oneBot = this.getOneBot(uin);
|
|
49
|
+
const message_id = oneBot.V11.getStrByInt("message_id", data.id);
|
|
50
|
+
const msg = await oneBot.internal.getMsg(message_id);
|
|
51
|
+
result.push({
|
|
52
|
+
type: "quote",
|
|
53
|
+
...msg,
|
|
54
|
+
});
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
default: {
|
|
58
|
+
result.push({
|
|
59
|
+
type: type,
|
|
60
|
+
...data,
|
|
61
|
+
...other,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
11
64
|
}
|
|
12
65
|
}
|
|
13
|
-
|
|
14
|
-
if (share)
|
|
15
|
-
(0, utils_1.remove)(elements, share);
|
|
16
|
-
for (const element of elements) {
|
|
17
|
-
if (["image", "video", "audio"].includes(element.type)) {
|
|
18
|
-
if (element["file_id"]?.startsWith("base64://"))
|
|
19
|
-
element["file_id"] = Buffer.from(element["file_id"].slice(9), "base64");
|
|
20
|
-
if (element["file"]?.startsWith("base64://"))
|
|
21
|
-
element["file"] = Buffer.from(element["file"].slice(9), "base64");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return { element: elements, share, music };
|
|
66
|
+
return result;
|
|
25
67
|
}
|
|
26
|
-
exports.
|
|
68
|
+
exports.processMessages = processMessages;
|
|
@@ -15,7 +15,7 @@ export default class QQAdapter extends Adapter<"qq", Sendable> {
|
|
|
15
15
|
sendDirectMessage<V extends OneBot.Version>(uin: string, version: V, args: [string, Sendable, string]): Promise<OneBot.MessageRet<V>>;
|
|
16
16
|
deleteMessage(uin: string, message_id: string): Promise<boolean>;
|
|
17
17
|
call(uin: string, version: string, method: string, args?: any[]): Promise<any>;
|
|
18
|
-
fromSegment<V extends OneBot.Version>(version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
18
|
+
fromSegment<V extends OneBot.Version>(onebot: OneBot<Bot>, version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
19
19
|
toSegment<V extends OneBot.Version, M = Sendable>(version: V, message: M): OneBot.Segment<V>[];
|
|
20
20
|
formatEventPayload<V extends OneBot.Version>(uin: string, version: V, event: string, data: any): OneBot.Payload<V>;
|
|
21
21
|
start(uin: string): Promise<void>;
|
package/lib/adapters/qq/index.js
CHANGED
|
@@ -175,8 +175,15 @@ class QQAdapter extends adapter_1.Adapter {
|
|
|
175
175
|
throw new Error(`call internal method error:${e.message}`);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
fromSegment(version, segment) {
|
|
179
|
-
return []
|
|
178
|
+
fromSegment(onebot, version, segment) {
|
|
179
|
+
return []
|
|
180
|
+
.concat(segment)
|
|
181
|
+
.map(segment => {
|
|
182
|
+
if (version === "V12" && ["image", "video", "audio"].includes(segment.type))
|
|
183
|
+
return onebot.V12.transformMedia(segment);
|
|
184
|
+
return segment;
|
|
185
|
+
})
|
|
186
|
+
.map(item => {
|
|
180
187
|
if (typeof item === "string")
|
|
181
188
|
return item;
|
|
182
189
|
const { type, data } = item;
|
|
@@ -14,7 +14,7 @@ export default class WechatAdapter extends Adapter<"wechat", Sendable> {
|
|
|
14
14
|
sendPrivateMessage<V extends OneBot.Version>(uin: string, version: V, args: [string, Sendable, string]): Promise<OneBot.MessageRet<V>>;
|
|
15
15
|
sendGroupMessage<V extends OneBot.Version>(uin: string, version: V, args: [string, Sendable, string]): Promise<OneBot.MessageRet<V>>;
|
|
16
16
|
deleteMessage<V extends OneBot.Version>(uin: string, version: V, [str]: [string]): Promise<boolean>;
|
|
17
|
-
fromSegment<V extends OneBot.Version>(version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
17
|
+
fromSegment<V extends OneBot.Version>(onebot: OneBot<Client>, version: V, segment: OneBot.Segment<V> | OneBot.Segment<V>[]): Sendable;
|
|
18
18
|
toSegment<V extends OneBot.Version>(version: V, message: Sendable): OneBot.Segment<V>[];
|
|
19
19
|
getFriendList<V extends OneBot.Version>(uin: string, version: V): Promise<OneBot.UserInfo<V>[]>;
|
|
20
20
|
getGroupList<V extends OneBot.Version>(uin: string, version: V): Promise<OneBot.GroupInfo<V>[]>;
|
|
@@ -143,8 +143,15 @@ class WechatAdapter extends adapter_1.Adapter {
|
|
|
143
143
|
return bot.internal.recallMsg(username, message_idArr.join(":"));
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
fromSegment(version, segment) {
|
|
147
|
-
return []
|
|
146
|
+
fromSegment(onebot, version, segment) {
|
|
147
|
+
return []
|
|
148
|
+
.concat(segment)
|
|
149
|
+
.map(segment => {
|
|
150
|
+
if (version === "V12" && ["image", "video", "audio"].includes(segment.type))
|
|
151
|
+
return onebot.V12.transformMedia(segment);
|
|
152
|
+
return segment;
|
|
153
|
+
})
|
|
154
|
+
.map(item => {
|
|
148
155
|
if (typeof item === "string")
|
|
149
156
|
return item;
|
|
150
157
|
const { type, data } = item;
|
package/lib/db.js
CHANGED
|
@@ -66,7 +66,7 @@ class JsonDB {
|
|
|
66
66
|
while (parentPath.length) {
|
|
67
67
|
const currentKey = parentPath.shift();
|
|
68
68
|
if (!Reflect.has(temp, currentKey))
|
|
69
|
-
Reflect.set(temp,
|
|
69
|
+
Reflect.set(temp, currentKey, {});
|
|
70
70
|
temp = Reflect.get(temp, currentKey);
|
|
71
71
|
}
|
|
72
72
|
if (temp[key] !== undefined)
|
package/lib/server/app.js
CHANGED
|
@@ -90,10 +90,15 @@ class App extends koa_1.default {
|
|
|
90
90
|
this.use((0, koa_bodyparser_1.default)())
|
|
91
91
|
.use(this.router.routes())
|
|
92
92
|
.use(this.router.allowedMethods())
|
|
93
|
-
.use((
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
.use(async (ctx, next) => {
|
|
94
|
+
const adapter = ctx.path?.slice(1)?.split("/")[0];
|
|
95
|
+
if (this.adapters.has(adapter))
|
|
96
|
+
return next();
|
|
97
|
+
return (0, koa_basic_auth_1.default)({
|
|
98
|
+
name: this.config.username,
|
|
99
|
+
pass: this.config.password,
|
|
100
|
+
})(ctx, next);
|
|
101
|
+
})
|
|
97
102
|
.use((0, koa_static_1.default)(path.resolve(__dirname, "../../dist")));
|
|
98
103
|
this.httpServer = (0, http_1.createServer)(this.callback());
|
|
99
104
|
this.ws = this.router.ws("/", this.httpServer);
|
package/lib/service/V11/index.js
CHANGED
|
@@ -503,7 +503,7 @@ class V11 extends service_1.Service {
|
|
|
503
503
|
res.reply[0].data.platform = res.reply[0].data.type;
|
|
504
504
|
delete res.reply[0].data.type;
|
|
505
505
|
}
|
|
506
|
-
res.reply = this.adapter.fromSegment("V11", res.reply);
|
|
506
|
+
res.reply = this.adapter.fromSegment(this.oneBot, "V11", res.reply);
|
|
507
507
|
}
|
|
508
508
|
this.action[action].apply(this, [id, res.reply, res.auto_escape]);
|
|
509
509
|
}
|
|
@@ -577,7 +577,7 @@ class V11 extends service_1.Service {
|
|
|
577
577
|
}
|
|
578
578
|
params[k] = this.adapter.fromCqcode("V11", params[k]);
|
|
579
579
|
}
|
|
580
|
-
params[k] = this.adapter.fromSegment("V11", params[k]);
|
|
580
|
+
params[k] = this.adapter.fromSegment(this.oneBot, "V11", params[k]);
|
|
581
581
|
params["message_id"] =
|
|
582
582
|
params[k].find(e => e.type === "reply")?.id || params["message_id"];
|
|
583
583
|
}
|
|
@@ -668,7 +668,6 @@ exports.V11 = V11;
|
|
|
668
668
|
reconnect_interval: 3,
|
|
669
669
|
use_http: true,
|
|
670
670
|
enable_cors: true,
|
|
671
|
-
enable_reissue: false,
|
|
672
671
|
use_ws: true,
|
|
673
672
|
http_reverse: [],
|
|
674
673
|
ws_reverse: [],
|
|
@@ -44,4 +44,5 @@ export declare class CommonAction {
|
|
|
44
44
|
uploadFileFragmented(this: V12, stage: "prepare" | "transfer" | "finish", name?: string, total_size?: number, file_id?: string, offset?: number, data?: string, sha256?: string): string | true;
|
|
45
45
|
getFile(this: V12, file_id: string): V12.FileInfo;
|
|
46
46
|
sendLike(this: V12, user_id: string, times?: number): Promise<any>;
|
|
47
|
+
imageOcr(this: V12, file: string): Promise<any>;
|
|
47
48
|
}
|
|
@@ -133,5 +133,8 @@ class CommonAction {
|
|
|
133
133
|
sendLike(user_id, times = 1) {
|
|
134
134
|
return this.adapter.call(this.oneBot.uin, "V12", "sendLike", [user_id, times]);
|
|
135
135
|
}
|
|
136
|
+
imageOcr(file) {
|
|
137
|
+
return this.adapter.call(this.oneBot.uin, "V12", "imageOcr", [file]);
|
|
138
|
+
}
|
|
136
139
|
}
|
|
137
140
|
exports.CommonAction = CommonAction;
|
|
@@ -49,6 +49,7 @@ export declare class V12 extends Service<"V12"> implements OneBot.Base {
|
|
|
49
49
|
};
|
|
50
50
|
system_online(data: any): void;
|
|
51
51
|
dispatch(data: Record<string, any>): Promise<void>;
|
|
52
|
+
transformMedia(segment: V12.Segment): V12.Segment;
|
|
52
53
|
apply(req: V12.RequestAction): Promise<string>;
|
|
53
54
|
private httpAuth;
|
|
54
55
|
private httpRequestHandler;
|
package/lib/service/V12/index.js
CHANGED
|
@@ -401,6 +401,18 @@ class V12 extends service_1.Service {
|
|
|
401
401
|
return;
|
|
402
402
|
this.emit("dispatch", payload);
|
|
403
403
|
}
|
|
404
|
+
transformMedia(segment) {
|
|
405
|
+
const file = this.getFile(segment.data.file_id);
|
|
406
|
+
if (file)
|
|
407
|
+
return {
|
|
408
|
+
type: segment.type,
|
|
409
|
+
data: {
|
|
410
|
+
...segment.data,
|
|
411
|
+
file_id: `base64://${file.data}`,
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
return segment;
|
|
415
|
+
}
|
|
404
416
|
async apply(req) {
|
|
405
417
|
let { action = "", params = {}, echo } = req;
|
|
406
418
|
action = (0, utils_2.toLine)(action);
|
|
@@ -445,7 +457,7 @@ class V12 extends service_1.Service {
|
|
|
445
457
|
}
|
|
446
458
|
params[k] = this.adapter.fromCqcode("V12", params[k]);
|
|
447
459
|
}
|
|
448
|
-
params[k] = this.adapter.fromSegment("V12", params[k]);
|
|
460
|
+
params[k] = this.adapter.fromSegment(this.oneBot, "V12", params[k]);
|
|
449
461
|
}
|
|
450
462
|
args.push(params[k]);
|
|
451
463
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "onebots",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.65",
|
|
4
4
|
"description": "基于icqq的多例oneBot实现",
|
|
5
|
-
"engines": {
|
|
6
|
-
"node": ">=16"
|
|
7
|
-
},
|
|
8
5
|
"main": "lib/index.js",
|
|
9
6
|
"bin": {
|
|
10
7
|
"onebots": "./lib/bin.js"
|
|
@@ -21,6 +18,13 @@
|
|
|
21
18
|
"docs:build": "vitepress build docs",
|
|
22
19
|
"docs:preview": "vitepress preview docs"
|
|
23
20
|
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=16"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public",
|
|
26
|
+
"registry": "https://registry.npmjs.org"
|
|
27
|
+
},
|
|
24
28
|
"repository": {
|
|
25
29
|
"type": "git",
|
|
26
30
|
"url": "git+https://github.com/liucl-cn/onebots.git"
|
|
@@ -89,4 +93,4 @@
|
|
|
89
93
|
"reflect-metadata": "^0.1.13",
|
|
90
94
|
"ws": "^8.16.0"
|
|
91
95
|
}
|
|
92
|
-
}
|
|
96
|
+
}
|
|
File without changes
|
|
File without changes
|