@alemonjs/qq-bot 2.1.33 → 2.1.35
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/README.md +46 -8
- package/dist/assets/index.css +1 -1
- package/dist/assets/index.js +12 -5
- package/dist/index.html +1 -1
- package/lib/config.d.ts +44 -19
- package/lib/config.js +39 -35
- package/lib/desktop.d.ts +4 -1
- package/lib/desktop.js +53 -57
- package/lib/format.d.ts +26 -5
- package/lib/format.js +84 -101
- package/lib/hook.d.ts +82 -65
- package/lib/hook.js +35 -32
- package/lib/index.d.ts +6 -4
- package/lib/index.js +13 -16
- package/lib/index.webhook.d.ts +4 -1
- package/lib/index.webhook.js +12 -14
- package/lib/index.websoket.d.ts +6 -3
- package/lib/index.websoket.js +131 -41
- package/lib/message/AT_MESSAGE_CREATE.d.ts +36 -33
- package/lib/message/AT_MESSAGE_CREATE.js +1 -1
- package/lib/message/CHANNEL_CREATE.d.ts +17 -14
- package/lib/message/CHANNEL_CREATE.js +1 -1
- package/lib/message/CHANNEL_DELETE.d.ts +22 -14
- package/lib/message/CHANNEL_DELETE.js +1 -1
- package/lib/message/CHANNEL_UPDATE.d.ts +22 -14
- package/lib/message/CHANNEL_UPDATE.js +1 -1
- package/lib/message/DIRECT_MESSAGE_CREATE.d.ts +35 -27
- package/lib/message/DIRECT_MESSAGE_CREATE.js +1 -1
- package/lib/message/DIRECT_MESSAGE_DELETE.d.ts +23 -15
- package/lib/message/DIRECT_MESSAGE_DELETE.js +1 -1
- package/lib/message/ERROR.d.ts +4 -1
- package/lib/message/ERROR.js +1 -1
- package/lib/message/GUILD_CREATE.d.ts +22 -14
- package/lib/message/GUILD_CREATE.js +1 -1
- package/lib/message/GUILD_DELETE.d.ts +22 -14
- package/lib/message/GUILD_DELETE.js +1 -1
- package/lib/message/GUILD_MEMBER_ADD.d.ts +21 -13
- package/lib/message/GUILD_MEMBER_ADD.js +1 -1
- package/lib/message/GUILD_MEMBER_REMOVE.d.ts +21 -13
- package/lib/message/GUILD_MEMBER_REMOVE.js +1 -1
- package/lib/message/GUILD_MEMBER_UPDATE.d.ts +21 -13
- package/lib/message/GUILD_MEMBER_UPDATE.js +1 -1
- package/lib/message/GUILD_UPDATE.d.ts +22 -14
- package/lib/message/GUILD_UPDATE.js +1 -1
- package/lib/message/INTERACTION_CREATE.d.ts +52 -44
- package/lib/message/INTERACTION_CREATE.js +1 -1
- package/lib/message/MESSAGE_CREATE.d.ts +12 -1
- package/lib/message/MESSAGE_CREATE.js +1 -1
- package/lib/message/MESSAGE_DELETE.d.ts +12 -1
- package/lib/message/MESSAGE_DELETE.js +1 -1
- package/lib/message/MESSAGE_REACTION_ADD.d.ts +15 -12
- package/lib/message/MESSAGE_REACTION_ADD.js +1 -1
- package/lib/message/MESSAGE_REACTION_REMOVE.d.ts +15 -12
- package/lib/message/MESSAGE_REACTION_REMOVE.js +1 -1
- package/lib/message/PUBLIC_MESSAGE_DELETE.d.ts +20 -13
- package/lib/message/PUBLIC_MESSAGE_DELETE.js +1 -1
- package/lib/message/READY.d.ts +11 -5
- package/lib/message/READY.js +1 -1
- package/lib/message/group/C2C_MESSAGE_CREATE.d.ts +18 -15
- package/lib/message/group/C2C_MESSAGE_CREATE.js +1 -1
- package/lib/message/group/C2C_MSG_RECEIVE.d.ts +13 -3
- package/lib/message/group/C2C_MSG_RECEIVE.js +1 -1
- package/lib/message/group/C2C_MSG_REJECT.d.ts +9 -3
- package/lib/message/group/C2C_MSG_REJECT.js +1 -1
- package/lib/message/group/FRIEND_ADD.d.ts +13 -3
- package/lib/message/group/FRIEND_ADD.js +1 -1
- package/lib/message/group/FRIEND_DEL.d.ts +9 -3
- package/lib/message/group/FRIEND_DEL.js +1 -1
- package/lib/message/group/GROUP_ADD_ROBOT.d.ts +23 -4
- package/lib/message/group/GROUP_ADD_ROBOT.js +1 -1
- package/lib/message/group/GROUP_AT_MESSAGE_CREATE.d.ts +38 -32
- package/lib/message/group/GROUP_AT_MESSAGE_CREATE.js +1 -1
- package/lib/message/group/GROUP_DEL_ROBOT.d.ts +19 -4
- package/lib/message/group/GROUP_DEL_ROBOT.js +1 -1
- package/lib/message/group/GROUP_JOIN_REQUEST.d.ts +83 -22
- package/lib/message/group/GROUP_JOIN_REQUEST.js +1 -1
- package/lib/message/group/GROUP_MEMBER_ADD.d.ts +8 -5
- package/lib/message/group/GROUP_MEMBER_ADD.js +1 -1
- package/lib/message/group/GROUP_MEMBER_REMOVE.d.ts +8 -5
- package/lib/message/group/GROUP_MEMBER_REMOVE.js +1 -1
- package/lib/message/group/GROUP_MESSAGE_CREATE.d.ts +38 -32
- package/lib/message/group/GROUP_MESSAGE_CREATE.js +1 -1
- package/lib/message/group/GROUP_MSG_RECEIVE.d.ts +14 -4
- package/lib/message/group/GROUP_MSG_RECEIVE.js +1 -1
- package/lib/message/group/GROUP_MSG_REJECT.d.ts +10 -4
- package/lib/message/group/GROUP_MSG_REJECT.js +1 -1
- package/lib/message/group/MESSAGE_AUDIT_PASS.d.ts +12 -6
- package/lib/message/group/MESSAGE_AUDIT_PASS.js +1 -1
- package/lib/message/group/MESSAGE_AUDIT_REJECT.d.ts +12 -6
- package/lib/message/group/MESSAGE_AUDIT_REJECT.js +1 -1
- package/lib/register.d.ts +12 -9
- package/lib/register.js +1246 -1404
- package/lib/sdk/api.d.ts +937 -306
- package/lib/sdk/api.js +1481 -893
- package/lib/sdk/client.webhook.d.ts +25 -8
- package/lib/sdk/client.webhook.js +185 -189
- package/lib/sdk/client.websoket.d.ts +31 -9
- package/lib/sdk/client.websoket.js +369 -392
- package/lib/sdk/config.d.ts +6 -2
- package/lib/sdk/config.js +9 -6
- package/lib/sdk/instance.d.ts +11 -3
- package/lib/sdk/instance.js +72 -84
- package/lib/sdk/intents.d.ts +89 -3
- package/lib/sdk/intents.js +116 -33
- package/lib/sdk/message.d.ts +7 -4
- package/lib/sdk/message.group.d.ts +38 -35
- package/lib/sdk/message.group.js +1 -1
- package/lib/sdk/message.guild.d.ts +40 -37
- package/lib/sdk/message.guild.js +1 -1
- package/lib/sdk/message.js +1 -1
- package/lib/sdk/message.public.d.ts +8 -5
- package/lib/sdk/message.public.js +1 -1
- package/lib/sdk/qr-auth.d.ts +55 -0
- package/lib/sdk/qr-auth.js +166 -0
- package/lib/sdk/registry.d.ts +34 -24
- package/lib/sdk/registry.js +134 -114
- package/lib/sdk/session.d.ts +19 -15
- package/lib/sdk/session.js +51 -54
- package/lib/sdk/typing.d.ts +410 -184
- package/lib/sdk/typing.js +1 -1
- package/lib/sdk/webhook.secret.d.ts +33 -13
- package/lib/sdk/webhook.secret.js +50 -36
- package/lib/sends.d.ts +42 -25
- package/lib/sends.js +519 -541
- package/lib/types.d.ts +52 -41
- package/lib/types.js +1 -1
- package/lib/upload.d.ts +47 -18
- package/lib/upload.js +80 -51
- package/lib/utils.d.ts +9 -1
- package/lib/utils.js +10 -5
- package/package.json +10 -7
- package/LICENSE +0 -21
package/lib/hook.d.ts
CHANGED
|
@@ -1,67 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
1
|
+
import { GROUP_AT_MESSAGE_CREATE_TYPE } from "./message/group/GROUP_AT_MESSAGE_CREATE.js";
|
|
2
|
+
import { GROUP_MESSAGE_CREATE_TYPE } from "./message/group/GROUP_MESSAGE_CREATE.js";
|
|
3
|
+
import { QQBotAPI } from "./sdk/api.js";
|
|
4
|
+
import { AT_MESSAGE_CREATE_TYPE } from "./message/AT_MESSAGE_CREATE.js";
|
|
5
|
+
import { INTERACTION_CREATE_TYPE } from "./message/INTERACTION_CREATE.js";
|
|
6
|
+
import { DIRECT_MESSAGE_CREATE_TYPE } from "./message/DIRECT_MESSAGE_CREATE.js";
|
|
7
|
+
import { C2C_MESSAGE_CREATE_TYPE } from "./message/group/C2C_MESSAGE_CREATE.js";
|
|
8
|
+
import { MESSAGE_CREATE_TYPE } from "./message/MESSAGE_CREATE.js";
|
|
9
|
+
import { MESSAGE_DELETE_TYPE } from "./message/MESSAGE_DELETE.js";
|
|
10
|
+
import { PUBLIC_MESSAGE_DELETE_TYPE } from "./message/PUBLIC_MESSAGE_DELETE.js";
|
|
11
|
+
import { DIRECT_MESSAGE_DELETE_TYPE } from "./message/DIRECT_MESSAGE_DELETE.js";
|
|
12
|
+
import { MESSAGE_REACTION_ADD_TYPE } from "./message/MESSAGE_REACTION_ADD.js";
|
|
13
|
+
import { MESSAGE_REACTION_REMOVE_TYPE } from "./message/MESSAGE_REACTION_REMOVE.js";
|
|
14
|
+
import { CHANNEL_CREATE_TYPE } from "./message/CHANNEL_CREATE.js";
|
|
15
|
+
import { CHANNEL_DELETE_TYPE } from "./message/CHANNEL_DELETE.js";
|
|
16
|
+
import { CHANNEL_UPDATE_TYPE } from "./message/CHANNEL_UPDATE.js";
|
|
17
|
+
import { GUILD_CREATE_TYPE } from "./message/GUILD_CREATE.js";
|
|
18
|
+
import { GUILD_DELETE_TYPE } from "./message/GUILD_DELETE.js";
|
|
19
|
+
import { GUILD_UPDATE_TYPE } from "./message/GUILD_UPDATE.js";
|
|
20
|
+
import { GUILD_MEMBER_ADD_TYPE } from "./message/GUILD_MEMBER_ADD.js";
|
|
21
|
+
import { GUILD_MEMBER_REMOVE_TYPE } from "./message/GUILD_MEMBER_REMOVE.js";
|
|
22
|
+
import { GUILD_MEMBER_UPDATE_TYPE } from "./message/GUILD_MEMBER_UPDATE.js";
|
|
23
|
+
import { GROUP_ADD_ROBOT_TYPE } from "./message/group/GROUP_ADD_ROBOT.js";
|
|
24
|
+
import { GROUP_DEL_ROBOT_TYPE } from "./message/group/GROUP_DEL_ROBOT.js";
|
|
25
|
+
import { FRIEND_ADD_TYPE } from "./message/group/FRIEND_ADD.js";
|
|
26
|
+
import { FRIEND_DEL_TYPE } from "./message/group/FRIEND_DEL.js";
|
|
27
|
+
import { GROUP_MSG_RECEIVE_TYPE } from "./message/group/GROUP_MSG_RECEIVE.js";
|
|
28
|
+
import { GROUP_MSG_REJECT_TYPE } from "./message/group/GROUP_MSG_REJECT.js";
|
|
29
|
+
import { C2C_MSG_RECEIVE_TYPE } from "./message/group/C2C_MSG_RECEIVE.js";
|
|
30
|
+
import { C2C_MSG_REJECT_TYPE } from "./message/group/C2C_MSG_REJECT.js";
|
|
31
|
+
import { MESSAGE_AUDIT_PASS_TYPE } from "./message/group/MESSAGE_AUDIT_PASS.js";
|
|
32
|
+
import { MESSAGE_AUDIT_REJECT_TYPE } from "./message/group/MESSAGE_AUDIT_REJECT.js";
|
|
33
|
+
import { GROUP_JOIN_REQUEST_TYPE } from "./message/group/GROUP_JOIN_REQUEST.js";
|
|
34
|
+
import { EventKeys, Events } from "alemonjs";
|
|
35
|
+
//#region src/hook.d.ts
|
|
35
36
|
type MAP = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
37
|
+
'message.create': GROUP_AT_MESSAGE_CREATE_TYPE | GROUP_MESSAGE_CREATE_TYPE | AT_MESSAGE_CREATE_TYPE | MESSAGE_CREATE_TYPE;
|
|
38
|
+
'private.message.create': DIRECT_MESSAGE_CREATE_TYPE | C2C_MESSAGE_CREATE_TYPE;
|
|
39
|
+
'interaction.create': INTERACTION_CREATE_TYPE;
|
|
40
|
+
'private.interaction.create': INTERACTION_CREATE_TYPE;
|
|
41
|
+
'message.update': undefined;
|
|
42
|
+
'message.delete': MESSAGE_DELETE_TYPE | PUBLIC_MESSAGE_DELETE_TYPE;
|
|
43
|
+
'message.reaction.add': MESSAGE_REACTION_ADD_TYPE;
|
|
44
|
+
'message.reaction.remove': MESSAGE_REACTION_REMOVE_TYPE;
|
|
45
|
+
'message.pin': undefined;
|
|
46
|
+
'channel.create': CHANNEL_CREATE_TYPE;
|
|
47
|
+
'channel.delete': CHANNEL_DELETE_TYPE;
|
|
48
|
+
'channel.update': CHANNEL_UPDATE_TYPE;
|
|
49
|
+
'guild.join': GUILD_CREATE_TYPE | GROUP_ADD_ROBOT_TYPE;
|
|
50
|
+
'guild.exit': GUILD_DELETE_TYPE | GROUP_DEL_ROBOT_TYPE;
|
|
51
|
+
'guild.update': GUILD_UPDATE_TYPE;
|
|
52
|
+
'member.add': GUILD_MEMBER_ADD_TYPE;
|
|
53
|
+
'member.remove': GUILD_MEMBER_REMOVE_TYPE;
|
|
54
|
+
'member.ban': undefined;
|
|
55
|
+
'member.unban': undefined;
|
|
56
|
+
'member.update': GUILD_MEMBER_UPDATE_TYPE;
|
|
57
|
+
'notice.create': GROUP_MSG_RECEIVE_TYPE | GROUP_MSG_REJECT_TYPE | MESSAGE_AUDIT_PASS_TYPE | MESSAGE_AUDIT_REJECT_TYPE | GROUP_JOIN_REQUEST_TYPE;
|
|
58
|
+
'private.message.update': undefined;
|
|
59
|
+
'private.message.delete': DIRECT_MESSAGE_DELETE_TYPE;
|
|
60
|
+
'private.friend.add': FRIEND_ADD_TYPE;
|
|
61
|
+
'private.friend.remove': FRIEND_DEL_TYPE;
|
|
62
|
+
'private.guild.add': undefined;
|
|
63
|
+
'private.notice.create': C2C_MSG_RECEIVE_TYPE | C2C_MSG_REJECT_TYPE;
|
|
63
64
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* @param event
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
declare const useValue: <T extends EventKeys>(event: Events[T]) => readonly [MAP[T]];
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @param event
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
declare const useClient: <T extends EventKeys>(event: Events[T]) => readonly [QQBotAPI, MAP[T]];
|
|
77
|
+
/**
|
|
78
|
+
* 判断当前模式
|
|
79
|
+
* @param event
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
declare const useMode: <T extends EventKeys>(event: Events[T]) => (mode: 'guild' | 'group' | 'c2c') => boolean;
|
|
83
|
+
//#endregion
|
|
84
|
+
export { useClient, useMode, useValue };
|
package/lib/hook.js
CHANGED
|
@@ -1,40 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { QQBotAPI } from "./sdk/api.js";
|
|
2
|
+
import { createEventValue, useClient as useClient$1 } from "alemonjs";
|
|
3
3
|
|
|
4
|
+
//#region src/hook.ts
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param event
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
4
10
|
const useValue = (event) => {
|
|
5
|
-
|
|
6
|
-
return [value];
|
|
11
|
+
return [createEventValue(event)];
|
|
7
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param event
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
8
18
|
const useClient = (event) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return [client, value];
|
|
19
|
+
const [client] = useClient$1(event, QQBotAPI);
|
|
20
|
+
return [client, createEventValue(event)];
|
|
12
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* 判断当前模式
|
|
24
|
+
* @param event
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
13
27
|
const useMode = (event) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
currentMode = 'guild';
|
|
27
|
-
}
|
|
28
|
-
if (tag === 'AT_MESSAGE_CREATE') {
|
|
29
|
-
currentMode = 'guild';
|
|
30
|
-
}
|
|
31
|
-
if (tag === 'MESSAGE_CREATE') {
|
|
32
|
-
currentMode = 'guild';
|
|
33
|
-
}
|
|
34
|
-
const isMode = (mode) => {
|
|
35
|
-
return currentMode === mode;
|
|
36
|
-
};
|
|
37
|
-
return isMode;
|
|
28
|
+
const tag = event._tag;
|
|
29
|
+
let currentMode = "group";
|
|
30
|
+
if (tag === "GROUP_AT_MESSAGE_CREATE") currentMode = "group";
|
|
31
|
+
if (tag === "GROUP_MESSAGE_CREATE") currentMode = "group";
|
|
32
|
+
if (tag === "C2C_MESSAGE_CREATE") currentMode = "c2c";
|
|
33
|
+
if (tag === "DIRECT_MESSAGE_CREATE") currentMode = "guild";
|
|
34
|
+
if (tag === "AT_MESSAGE_CREATE") currentMode = "guild";
|
|
35
|
+
if (tag === "MESSAGE_CREATE") currentMode = "guild";
|
|
36
|
+
const isMode = (mode) => {
|
|
37
|
+
return currentMode === mode;
|
|
38
|
+
};
|
|
39
|
+
return isMode;
|
|
38
40
|
};
|
|
39
41
|
|
|
40
|
-
|
|
42
|
+
//#endregion
|
|
43
|
+
export { useClient, useMode, useValue };
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { platform } from "./config.js";
|
|
2
|
+
import { QQBotAPI } from "./sdk/api.js";
|
|
3
|
+
import { useClient, useMode, useValue } from "./hook.js";
|
|
4
|
+
//#region src/index.d.ts
|
|
4
5
|
declare const _default: () => any;
|
|
5
|
-
|
|
6
|
+
//#endregion
|
|
7
|
+
export { QQBotAPI as API, _default as default, platform, useClient, useMode, useValue };
|
package/lib/index.js
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { start
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export { QQBotAPI as API } from './sdk/api.js';
|
|
1
|
+
import { getQQBotConfig, platform } from "./config.js";
|
|
2
|
+
import { QQBotAPI } from "./sdk/api.js";
|
|
3
|
+
import { start } from "./index.websoket.js";
|
|
4
|
+
import { useClient, useMode, useValue } from "./hook.js";
|
|
5
|
+
import { start as start$1 } from "./index.webhook.js";
|
|
6
|
+
import { definePlatform } from "alemonjs";
|
|
8
7
|
|
|
8
|
+
//#region src/index.ts
|
|
9
9
|
const main = () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
start$1();
|
|
16
|
-
}
|
|
10
|
+
const config = getQQBotConfig();
|
|
11
|
+
if (config?.route || config?.port || config?.ws) start$1();
|
|
12
|
+
else start();
|
|
17
13
|
};
|
|
18
|
-
var
|
|
14
|
+
var src_default = definePlatform({ main });
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
//#endregion
|
|
17
|
+
export { QQBotAPI as API, src_default as default, platform, useClient, useMode, useValue };
|
package/lib/index.webhook.d.ts
CHANGED
package/lib/index.webhook.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { register } from
|
|
3
|
-
import {
|
|
1
|
+
import { getQQBotConfig } from "./config.js";
|
|
2
|
+
import { register } from "./register.js";
|
|
3
|
+
import { QQBotClient } from "./sdk/client.webhook.js";
|
|
4
4
|
|
|
5
|
+
//#region src/index.webhook.ts
|
|
5
6
|
const start = () => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
...cfgConfig
|
|
13
|
-
});
|
|
14
|
-
client.connect();
|
|
15
|
-
register(client);
|
|
7
|
+
const config = getQQBotConfig();
|
|
8
|
+
if (config.bots && Object.keys(config.bots).length > 1) throw new Error("qq-bot.bots is only supported by WebSocket mode; remove route/port/ws to use the QQ WebSocket gateway");
|
|
9
|
+
const { master_id: _, master_key: __, ...cfgConfig } = config;
|
|
10
|
+
const client = new QQBotClient({ ...cfgConfig });
|
|
11
|
+
client.connect();
|
|
12
|
+
register(client);
|
|
16
13
|
};
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
//#endregion
|
|
16
|
+
export { start };
|
package/lib/index.websoket.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import { QQBotRegistry } from
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { QQBotRegistry } from "./sdk/registry.js";
|
|
2
|
+
//#region src/index.websoket.d.ts
|
|
3
|
+
declare const getQQBotRegistry: () => QQBotRegistry;
|
|
4
|
+
declare const start: () => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getQQBotRegistry, start };
|
package/lib/index.websoket.js
CHANGED
|
@@ -1,47 +1,137 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getQQBotBots, getQQBotConfig } from "./config.js";
|
|
2
|
+
import { qrLogin, saveBotCredentials } from "./sdk/qr-auth.js";
|
|
3
|
+
import { QQBotRegistry } from "./sdk/registry.js";
|
|
4
|
+
import { cbpPlatform, logger } from "alemonjs";
|
|
3
5
|
|
|
6
|
+
//#region src/index.websoket.ts
|
|
4
7
|
let activeRegistry;
|
|
5
8
|
const getQQBotRegistry = () => activeRegistry;
|
|
9
|
+
/** 是否已有可用的机器人凭证(顶层 app_id+secret 或 bots 配置) */
|
|
10
|
+
const hasConfiguredCredentials = () => {
|
|
11
|
+
const config = getQQBotConfig();
|
|
12
|
+
if (config?.bots && Object.keys(config.bots).length > 0) return true;
|
|
13
|
+
return Boolean(config?.app_id && config?.secret);
|
|
14
|
+
};
|
|
6
15
|
const start = () => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
16
|
+
bootstrap();
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 未配置 app_id/secret 时进入扫码登录:
|
|
20
|
+
* 引导用户扫码授权,凭证写入配置文件(保留原有注释与格式)后继续连接;
|
|
21
|
+
* 扫码未完成则跳过连接,等待用户重启或手动配置
|
|
22
|
+
*/
|
|
23
|
+
const bootstrap = async () => {
|
|
24
|
+
const cbp = cbpPlatform();
|
|
25
|
+
let loginStatus = {
|
|
26
|
+
state: hasConfiguredCredentials() ? "not_required" : "awaiting_qrcode",
|
|
27
|
+
updatedAt: Date.now()
|
|
28
|
+
};
|
|
29
|
+
const { defaultBot } = getQQBotBots();
|
|
30
|
+
const registry = new QQBotRegistry(defaultBot, cbp, () => loginStatus);
|
|
31
|
+
activeRegistry = registry;
|
|
32
|
+
if (!hasConfiguredCredentials()) {
|
|
33
|
+
logger.info("[qq-bot] 未检测到 app_id/secret 配置,进入扫码登录流程");
|
|
34
|
+
const result = await qrLogin({ onQRCode: (qrBuffer, url, loginId, refresh) => {
|
|
35
|
+
loginStatus = {
|
|
36
|
+
state: "awaiting_qrcode",
|
|
37
|
+
type: "qrcode",
|
|
38
|
+
loginId,
|
|
39
|
+
qrcode: {
|
|
40
|
+
url,
|
|
41
|
+
imageBase64: qrBuffer.toString("base64"),
|
|
42
|
+
format: "png",
|
|
43
|
+
refreshed: refresh > 0
|
|
44
|
+
},
|
|
45
|
+
updatedAt: Date.now()
|
|
46
|
+
};
|
|
47
|
+
cbp.send({
|
|
48
|
+
name: "login.qrcode",
|
|
49
|
+
value: "",
|
|
50
|
+
Platform: "qq-bot",
|
|
51
|
+
LoginId: loginId,
|
|
52
|
+
LoginType: "qrcode",
|
|
53
|
+
QRCode: {
|
|
54
|
+
url,
|
|
55
|
+
imageBase64: qrBuffer.toString("base64"),
|
|
56
|
+
format: "png",
|
|
57
|
+
refreshed: refresh > 0
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
} });
|
|
61
|
+
if (!result) {
|
|
62
|
+
loginStatus = {
|
|
63
|
+
state: "failed",
|
|
64
|
+
type: "qrcode",
|
|
65
|
+
updatedAt: Date.now(),
|
|
66
|
+
lastError: "二维码登录未完成"
|
|
67
|
+
};
|
|
68
|
+
logger.warn("[qq-bot] 扫码登录未完成,已跳过 qq-bot 连接;可重启重试,或手动在配置文件中填写 app_id/secret");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!saveBotCredentials(result.appId, result.clientSecret)) {
|
|
72
|
+
loginStatus = {
|
|
73
|
+
state: "failed",
|
|
74
|
+
type: "qrcode",
|
|
75
|
+
loginId: result.loginId,
|
|
76
|
+
updatedAt: Date.now(),
|
|
77
|
+
lastError: "凭证写入失败"
|
|
78
|
+
};
|
|
79
|
+
logger.warn(`[qq-bot] 凭证写入配置失败(AppID=${result.appId}),已跳过连接;请手动补全配置`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
loginStatus = {
|
|
83
|
+
state: "authorized",
|
|
84
|
+
type: "qrcode",
|
|
85
|
+
loginId: result.loginId,
|
|
86
|
+
updatedAt: Date.now()
|
|
87
|
+
};
|
|
88
|
+
cbp.send({
|
|
89
|
+
name: "login.success",
|
|
90
|
+
value: "",
|
|
91
|
+
Platform: "qq-bot",
|
|
92
|
+
LoginId: result.loginId,
|
|
93
|
+
LoginType: "qrcode",
|
|
94
|
+
BotId: result.appId,
|
|
95
|
+
UserId: result.userOpenid
|
|
96
|
+
});
|
|
97
|
+
logger.info(`[qq-bot] 扫码登录成功,凭证已写入配置文件(AppID=${result.appId})`);
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
connectAll(registry);
|
|
101
|
+
} catch (err) {
|
|
102
|
+
logger.error(`[qq-bot] 启动连接失败:${err?.message ?? err}`);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const connectAll = (registry) => {
|
|
106
|
+
const { bots } = getQQBotBots();
|
|
107
|
+
const notPrivateIntents = [
|
|
108
|
+
"GUILDS",
|
|
109
|
+
"GUILD_MEMBERS",
|
|
110
|
+
"GUILD_MESSAGE_REACTIONS",
|
|
111
|
+
"DIRECT_MESSAGE",
|
|
112
|
+
"PUBLIC_GUILD_MESSAGES"
|
|
113
|
+
];
|
|
114
|
+
const isPrivateIntents = [
|
|
115
|
+
"GUILDS",
|
|
116
|
+
"GUILD_MEMBERS",
|
|
117
|
+
"GUILD_MESSAGES",
|
|
118
|
+
"GUILD_MESSAGE_REACTIONS",
|
|
119
|
+
"DIRECT_MESSAGE",
|
|
120
|
+
"FORUMS_EVENT"
|
|
121
|
+
];
|
|
122
|
+
const isGroupIntents = ["GROUP_AND_C2C_EVENT", "GROUP_MEMBER_EVENT"];
|
|
123
|
+
const pubIntents = ["INTERACTION"];
|
|
124
|
+
const intents = [];
|
|
125
|
+
if (getQQBotConfig()?.is_private) intents.push(...isPrivateIntents, ...isGroupIntents, ...pubIntents);
|
|
126
|
+
else intents.push(...notPrivateIntents, ...isGroupIntents, ...pubIntents);
|
|
127
|
+
for (const [botId, botConfig] of bots) registry.add(botId, {
|
|
128
|
+
...botConfig,
|
|
129
|
+
intents: botConfig.intents || intents,
|
|
130
|
+
is_private: botConfig.is_private ?? false,
|
|
131
|
+
sandbox: botConfig.sandbox ?? false,
|
|
132
|
+
shard: botConfig.shard ?? [0, 1]
|
|
133
|
+
}).connect(botConfig.gatewayURL);
|
|
45
134
|
};
|
|
46
135
|
|
|
47
|
-
|
|
136
|
+
//#endregion
|
|
137
|
+
export { getQQBotRegistry, start };
|
|
@@ -1,35 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
url: string;
|
|
5
|
-
content_type: string;
|
|
6
|
-
filename: string;
|
|
7
|
-
size: number;
|
|
8
|
-
height: number;
|
|
9
|
-
width: number;
|
|
10
|
-
}[];
|
|
11
|
-
author: {
|
|
12
|
-
avatar: string;
|
|
13
|
-
bot: boolean;
|
|
14
|
-
id: string;
|
|
15
|
-
username: string;
|
|
16
|
-
};
|
|
17
|
-
channel_id: string;
|
|
18
|
-
content: string;
|
|
19
|
-
guild_id: string;
|
|
1
|
+
//#region src/message/AT_MESSAGE_CREATE.d.ts
|
|
2
|
+
type AT_MESSAGE_CREATE_TYPE = {
|
|
3
|
+
attachments?: {
|
|
20
4
|
id: string;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
5
|
+
url: string;
|
|
6
|
+
content_type: string;
|
|
7
|
+
filename: string;
|
|
8
|
+
size: number;
|
|
9
|
+
height: number;
|
|
10
|
+
width: number;
|
|
11
|
+
}[];
|
|
12
|
+
author: {
|
|
13
|
+
avatar: string;
|
|
14
|
+
bot: boolean;
|
|
15
|
+
id: string;
|
|
16
|
+
username: string;
|
|
17
|
+
};
|
|
18
|
+
channel_id: string;
|
|
19
|
+
content: string;
|
|
20
|
+
guild_id: string;
|
|
21
|
+
id: string;
|
|
22
|
+
member: {
|
|
23
|
+
joined_at: string;
|
|
24
|
+
nick: string;
|
|
25
|
+
roles: string[];
|
|
26
|
+
};
|
|
27
|
+
mentions: {
|
|
28
|
+
avatar: string;
|
|
29
|
+
bot: boolean;
|
|
30
|
+
id: string;
|
|
31
|
+
username: string;
|
|
32
|
+
}[];
|
|
33
|
+
seq: number;
|
|
34
|
+
seq_in_channel: string;
|
|
35
|
+
timestamp: string;
|
|
35
36
|
};
|
|
37
|
+
//#endregion
|
|
38
|
+
export { AT_MESSAGE_CREATE_TYPE };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export { };
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
//#region src/message/CHANNEL_CREATE.d.ts
|
|
2
|
+
type CHANNEL_CREATE_TYPE = {
|
|
3
|
+
application_id?: string;
|
|
4
|
+
guild_id: string;
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
op_user_id: string;
|
|
8
|
+
owner_id: string;
|
|
9
|
+
parent_id?: string;
|
|
10
|
+
permissions?: string;
|
|
11
|
+
position?: number;
|
|
12
|
+
private_type: number;
|
|
13
|
+
speak_permission: number;
|
|
14
|
+
sub_type: number;
|
|
15
|
+
type: number;
|
|
15
16
|
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { CHANNEL_CREATE_TYPE };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export { };
|