@alemonjs/qq-bot 2.1.32 → 2.1.34

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.
Files changed (131) hide show
  1. package/README.md +1984 -35
  2. package/dist/assets/index.css +1 -1
  3. package/dist/assets/index.js +12 -5
  4. package/dist/index.html +1 -1
  5. package/lib/config.d.ts +44 -19
  6. package/lib/config.js +39 -35
  7. package/lib/desktop.d.ts +4 -1
  8. package/lib/desktop.js +53 -57
  9. package/lib/format.d.ts +26 -5
  10. package/lib/format.js +84 -101
  11. package/lib/hook.d.ts +82 -64
  12. package/lib/hook.js +35 -32
  13. package/lib/index.d.ts +6 -4
  14. package/lib/index.js +13 -16
  15. package/lib/index.webhook.d.ts +4 -1
  16. package/lib/index.webhook.js +12 -14
  17. package/lib/index.websoket.d.ts +6 -3
  18. package/lib/index.websoket.js +131 -41
  19. package/lib/message/AT_MESSAGE_CREATE.d.ts +36 -33
  20. package/lib/message/AT_MESSAGE_CREATE.js +1 -1
  21. package/lib/message/CHANNEL_CREATE.d.ts +17 -14
  22. package/lib/message/CHANNEL_CREATE.js +1 -1
  23. package/lib/message/CHANNEL_DELETE.d.ts +22 -14
  24. package/lib/message/CHANNEL_DELETE.js +1 -1
  25. package/lib/message/CHANNEL_UPDATE.d.ts +22 -14
  26. package/lib/message/CHANNEL_UPDATE.js +1 -1
  27. package/lib/message/DIRECT_MESSAGE_CREATE.d.ts +35 -27
  28. package/lib/message/DIRECT_MESSAGE_CREATE.js +1 -1
  29. package/lib/message/DIRECT_MESSAGE_DELETE.d.ts +23 -15
  30. package/lib/message/DIRECT_MESSAGE_DELETE.js +1 -1
  31. package/lib/message/ERROR.d.ts +4 -1
  32. package/lib/message/ERROR.js +1 -1
  33. package/lib/message/GUILD_CREATE.d.ts +22 -14
  34. package/lib/message/GUILD_CREATE.js +1 -1
  35. package/lib/message/GUILD_DELETE.d.ts +22 -14
  36. package/lib/message/GUILD_DELETE.js +1 -1
  37. package/lib/message/GUILD_MEMBER_ADD.d.ts +21 -13
  38. package/lib/message/GUILD_MEMBER_ADD.js +1 -1
  39. package/lib/message/GUILD_MEMBER_REMOVE.d.ts +21 -13
  40. package/lib/message/GUILD_MEMBER_REMOVE.js +1 -1
  41. package/lib/message/GUILD_MEMBER_UPDATE.d.ts +21 -13
  42. package/lib/message/GUILD_MEMBER_UPDATE.js +1 -1
  43. package/lib/message/GUILD_UPDATE.d.ts +22 -14
  44. package/lib/message/GUILD_UPDATE.js +1 -1
  45. package/lib/message/INTERACTION_CREATE.d.ts +52 -44
  46. package/lib/message/INTERACTION_CREATE.js +1 -1
  47. package/lib/message/MESSAGE_CREATE.d.ts +12 -1
  48. package/lib/message/MESSAGE_CREATE.js +1 -1
  49. package/lib/message/MESSAGE_DELETE.d.ts +12 -1
  50. package/lib/message/MESSAGE_DELETE.js +1 -1
  51. package/lib/message/MESSAGE_REACTION_ADD.d.ts +15 -12
  52. package/lib/message/MESSAGE_REACTION_ADD.js +1 -1
  53. package/lib/message/MESSAGE_REACTION_REMOVE.d.ts +15 -12
  54. package/lib/message/MESSAGE_REACTION_REMOVE.js +1 -1
  55. package/lib/message/PUBLIC_MESSAGE_DELETE.d.ts +20 -13
  56. package/lib/message/PUBLIC_MESSAGE_DELETE.js +1 -1
  57. package/lib/message/READY.d.ts +11 -5
  58. package/lib/message/READY.js +1 -1
  59. package/lib/message/group/C2C_MESSAGE_CREATE.d.ts +18 -15
  60. package/lib/message/group/C2C_MESSAGE_CREATE.js +1 -1
  61. package/lib/message/group/C2C_MSG_RECEIVE.d.ts +13 -3
  62. package/lib/message/group/C2C_MSG_RECEIVE.js +1 -1
  63. package/lib/message/group/C2C_MSG_REJECT.d.ts +9 -3
  64. package/lib/message/group/C2C_MSG_REJECT.js +1 -1
  65. package/lib/message/group/FRIEND_ADD.d.ts +13 -3
  66. package/lib/message/group/FRIEND_ADD.js +1 -1
  67. package/lib/message/group/FRIEND_DEL.d.ts +9 -3
  68. package/lib/message/group/FRIEND_DEL.js +1 -1
  69. package/lib/message/group/GROUP_ADD_ROBOT.d.ts +23 -4
  70. package/lib/message/group/GROUP_ADD_ROBOT.js +1 -1
  71. package/lib/message/group/GROUP_AT_MESSAGE_CREATE.d.ts +38 -32
  72. package/lib/message/group/GROUP_AT_MESSAGE_CREATE.js +1 -1
  73. package/lib/message/group/GROUP_DEL_ROBOT.d.ts +19 -4
  74. package/lib/message/group/GROUP_DEL_ROBOT.js +1 -1
  75. package/lib/message/group/GROUP_JOIN_REQUEST.d.ts +84 -0
  76. package/lib/message/group/GROUP_JOIN_REQUEST.js +1 -0
  77. package/lib/message/group/GROUP_MEMBER_ADD.d.ts +8 -5
  78. package/lib/message/group/GROUP_MEMBER_ADD.js +1 -1
  79. package/lib/message/group/GROUP_MEMBER_REMOVE.d.ts +8 -5
  80. package/lib/message/group/GROUP_MEMBER_REMOVE.js +1 -1
  81. package/lib/message/group/GROUP_MESSAGE_CREATE.d.ts +38 -32
  82. package/lib/message/group/GROUP_MESSAGE_CREATE.js +1 -1
  83. package/lib/message/group/GROUP_MSG_RECEIVE.d.ts +14 -4
  84. package/lib/message/group/GROUP_MSG_RECEIVE.js +1 -1
  85. package/lib/message/group/GROUP_MSG_REJECT.d.ts +10 -4
  86. package/lib/message/group/GROUP_MSG_REJECT.js +1 -1
  87. package/lib/message/group/MESSAGE_AUDIT_PASS.d.ts +12 -6
  88. package/lib/message/group/MESSAGE_AUDIT_PASS.js +1 -1
  89. package/lib/message/group/MESSAGE_AUDIT_REJECT.d.ts +12 -6
  90. package/lib/message/group/MESSAGE_AUDIT_REJECT.js +1 -1
  91. package/lib/register.d.ts +12 -9
  92. package/lib/register.js +1246 -1200
  93. package/lib/sdk/api.d.ts +937 -251
  94. package/lib/sdk/api.js +1481 -758
  95. package/lib/sdk/client.webhook.d.ts +25 -8
  96. package/lib/sdk/client.webhook.js +185 -189
  97. package/lib/sdk/client.websoket.d.ts +31 -9
  98. package/lib/sdk/client.websoket.js +369 -392
  99. package/lib/sdk/config.d.ts +6 -2
  100. package/lib/sdk/config.js +9 -6
  101. package/lib/sdk/instance.d.ts +11 -3
  102. package/lib/sdk/instance.js +73 -83
  103. package/lib/sdk/intents.d.ts +89 -3
  104. package/lib/sdk/intents.js +116 -31
  105. package/lib/sdk/message.d.ts +7 -4
  106. package/lib/sdk/message.group.d.ts +38 -33
  107. package/lib/sdk/message.group.js +1 -1
  108. package/lib/sdk/message.guild.d.ts +40 -37
  109. package/lib/sdk/message.guild.js +1 -1
  110. package/lib/sdk/message.js +1 -1
  111. package/lib/sdk/message.public.d.ts +8 -5
  112. package/lib/sdk/message.public.js +1 -1
  113. package/lib/sdk/qr-auth.d.ts +55 -0
  114. package/lib/sdk/qr-auth.js +169 -0
  115. package/lib/sdk/registry.d.ts +34 -24
  116. package/lib/sdk/registry.js +134 -114
  117. package/lib/sdk/session.d.ts +19 -15
  118. package/lib/sdk/session.js +51 -54
  119. package/lib/sdk/typing.d.ts +416 -68
  120. package/lib/sdk/typing.js +1 -1
  121. package/lib/sdk/webhook.secret.d.ts +33 -13
  122. package/lib/sdk/webhook.secret.js +50 -36
  123. package/lib/sends.d.ts +46 -25
  124. package/lib/sends.js +533 -497
  125. package/lib/types.d.ts +52 -41
  126. package/lib/types.js +1 -1
  127. package/lib/upload.d.ts +50 -0
  128. package/lib/upload.js +89 -0
  129. package/lib/utils.d.ts +9 -1
  130. package/lib/utils.js +10 -5
  131. package/package.json +11 -8
package/lib/hook.d.ts CHANGED
@@ -1,66 +1,84 @@
1
- import { EventKeys, Events } from 'alemonjs';
2
- import { GROUP_AT_MESSAGE_CREATE_TYPE } from './message/group/GROUP_AT_MESSAGE_CREATE';
3
- import { GROUP_MESSAGE_CREATE_TYPE } from './message/group/GROUP_MESSAGE_CREATE';
4
- import { QQBotAPI as API } from './sdk/api';
5
- import { AT_MESSAGE_CREATE_TYPE } from './message/AT_MESSAGE_CREATE';
6
- import { INTERACTION_CREATE_TYPE } from './message/INTERACTION_CREATE';
7
- import { DIRECT_MESSAGE_CREATE_TYPE } from './message/DIRECT_MESSAGE_CREATE';
8
- import { C2C_MESSAGE_CREATE_TYPE } from './message/group/C2C_MESSAGE_CREATE';
9
- import { MESSAGE_CREATE_TYPE } from './message/MESSAGE_CREATE';
10
- import { MESSAGE_DELETE_TYPE } from './message/MESSAGE_DELETE';
11
- import { PUBLIC_MESSAGE_DELETE_TYPE } from './message/PUBLIC_MESSAGE_DELETE';
12
- import { DIRECT_MESSAGE_DELETE_TYPE } from './message/DIRECT_MESSAGE_DELETE';
13
- import { MESSAGE_REACTION_ADD_TYPE } from './message/MESSAGE_REACTION_ADD';
14
- import { MESSAGE_REACTION_REMOVE_TYPE } from './message/MESSAGE_REACTION_REMOVE';
15
- import { CHANNEL_CREATE_TYPE } from './message/CHANNEL_CREATE';
16
- import { CHANNEL_DELETE_TYPE } from './message/CHANNEL_DELETE';
17
- import { CHANNEL_UPDATE_TYPE } from './message/CHANNEL_UPDATE';
18
- import { GUILD_CREATE_TYPE } from './message/GUILD_CREATE';
19
- import { GUILD_DELETE_TYPE } from './message/GUILD_DELETE';
20
- import { GUILD_UPDATE_TYPE } from './message/GUILD_UPDATE';
21
- import { GUILD_MEMBER_ADD_TYPE } from './message/GUILD_MEMBER_ADD';
22
- import { GUILD_MEMBER_REMOVE_TYPE } from './message/GUILD_MEMBER_REMOVE';
23
- import { GUILD_MEMBER_UPDATE_TYPE } from './message/GUILD_MEMBER_UPDATE';
24
- import { GROUP_ADD_ROBOT_TYPE } from './message/group/GROUP_ADD_ROBOT';
25
- import { GROUP_DEL_ROBOT_TYPE } from './message/group/GROUP_DEL_ROBOT';
26
- import { FRIEND_ADD_TYPE } from './message/group/FRIEND_ADD';
27
- import { FRIEND_DEL_TYPE } from './message/group/FRIEND_DEL';
28
- import { GROUP_MSG_RECEIVE_TYPE } from './message/group/GROUP_MSG_RECEIVE';
29
- import { GROUP_MSG_REJECT_TYPE } from './message/group/GROUP_MSG_REJECT';
30
- import { C2C_MSG_RECEIVE_TYPE } from './message/group/C2C_MSG_RECEIVE';
31
- import { C2C_MSG_REJECT_TYPE } from './message/group/C2C_MSG_REJECT';
32
- import { MESSAGE_AUDIT_PASS_TYPE } from './message/group/MESSAGE_AUDIT_PASS';
33
- import { MESSAGE_AUDIT_REJECT_TYPE } from './message/group/MESSAGE_AUDIT_REJECT';
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
34
36
  type MAP = {
35
- 'message.create': GROUP_AT_MESSAGE_CREATE_TYPE | GROUP_MESSAGE_CREATE_TYPE | AT_MESSAGE_CREATE_TYPE | MESSAGE_CREATE_TYPE;
36
- 'private.message.create': DIRECT_MESSAGE_CREATE_TYPE | C2C_MESSAGE_CREATE_TYPE;
37
- 'interaction.create': INTERACTION_CREATE_TYPE;
38
- 'private.interaction.create': INTERACTION_CREATE_TYPE;
39
- 'message.update': undefined;
40
- 'message.delete': MESSAGE_DELETE_TYPE | PUBLIC_MESSAGE_DELETE_TYPE;
41
- 'message.reaction.add': MESSAGE_REACTION_ADD_TYPE;
42
- 'message.reaction.remove': MESSAGE_REACTION_REMOVE_TYPE;
43
- 'message.pin': undefined;
44
- 'channel.create': CHANNEL_CREATE_TYPE;
45
- 'channel.delete': CHANNEL_DELETE_TYPE;
46
- 'channel.update': CHANNEL_UPDATE_TYPE;
47
- 'guild.join': GUILD_CREATE_TYPE | GROUP_ADD_ROBOT_TYPE;
48
- 'guild.exit': GUILD_DELETE_TYPE | GROUP_DEL_ROBOT_TYPE;
49
- 'guild.update': GUILD_UPDATE_TYPE;
50
- 'member.add': GUILD_MEMBER_ADD_TYPE;
51
- 'member.remove': GUILD_MEMBER_REMOVE_TYPE;
52
- 'member.ban': undefined;
53
- 'member.unban': undefined;
54
- 'member.update': GUILD_MEMBER_UPDATE_TYPE;
55
- 'notice.create': GROUP_MSG_RECEIVE_TYPE | GROUP_MSG_REJECT_TYPE | MESSAGE_AUDIT_PASS_TYPE | MESSAGE_AUDIT_REJECT_TYPE;
56
- 'private.message.update': undefined;
57
- 'private.message.delete': DIRECT_MESSAGE_DELETE_TYPE;
58
- 'private.friend.add': FRIEND_ADD_TYPE;
59
- 'private.friend.remove': FRIEND_DEL_TYPE;
60
- 'private.guild.add': undefined;
61
- 'private.notice.create': C2C_MSG_RECEIVE_TYPE | C2C_MSG_REJECT_TYPE;
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;
62
64
  };
63
- export declare const useValue: <T extends EventKeys>(event: Events[T]) => readonly [MAP[T]];
64
- export declare const useClient: <T extends EventKeys>(event: Events[T]) => readonly [API, MAP[T]];
65
- export declare const useMode: <T extends EventKeys>(event: Events[T]) => (mode: "guild" | "group" | "c2c") => boolean;
66
- export {};
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 { useClient as useClient$1, createEventValue } from 'alemonjs';
2
- import { QQBotAPI } from './sdk/api.js';
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
- const value = createEventValue(event);
6
- return [value];
11
+ return [createEventValue(event)];
7
12
  };
13
+ /**
14
+ *
15
+ * @param event
16
+ * @returns
17
+ */
8
18
  const useClient = (event) => {
9
- const [client] = useClient$1(event, QQBotAPI);
10
- const value = createEventValue(event);
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
- const tag = event._tag;
15
- let currentMode = 'group';
16
- if (tag === 'GROUP_AT_MESSAGE_CREATE') {
17
- currentMode = 'group';
18
- }
19
- if (tag === 'GROUP_MESSAGE_CREATE') {
20
- currentMode = 'group';
21
- }
22
- if (tag === 'C2C_MESSAGE_CREATE') {
23
- currentMode = 'c2c';
24
- }
25
- if (tag === 'DIRECT_MESSAGE_CREATE') {
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
- export { useClient, useMode, useValue };
42
+ //#endregion
43
+ export { useClient, useMode, useValue };
package/lib/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- export { platform } from './config';
2
- export * from './hook';
3
- export { QQBotAPI as API } from './sdk/api';
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
- export default _default;
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 { definePlatform } from 'alemonjs';
2
- import { start } from './index.webhook.js';
3
- import { start as start$1 } from './index.websoket.js';
4
- import { getQQBotConfig } from './config.js';
5
- export { platform } from './config.js';
6
- export { useClient, useMode, useValue } from './hook.js';
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
- const config = getQQBotConfig();
11
- if (config?.route || config?.port || config?.ws) {
12
- start();
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 index = definePlatform({ main });
14
+ var src_default = definePlatform({ main });
19
15
 
20
- export { index as default };
16
+ //#endregion
17
+ export { QQBotAPI as API, src_default as default, platform, useClient, useMode, useValue };
@@ -1 +1,4 @@
1
- export declare const start: () => void;
1
+ //#region src/index.webhook.d.ts
2
+ declare const start: () => void;
3
+ //#endregion
4
+ export { start };
@@ -1,18 +1,16 @@
1
- import { QQBotClient } from './sdk/client.webhook.js';
2
- import { register } from './register.js';
3
- import { getQQBotConfig } from './config.js';
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
- const config = getQQBotConfig();
7
- if (config.bots && Object.keys(config.bots).length > 1) {
8
- throw new Error('qq-bot.bots is only supported by WebSocket mode; remove route/port/ws to use the QQ WebSocket gateway');
9
- }
10
- const { master_id: _, master_key: __, ...cfgConfig } = config;
11
- const client = new QQBotClient({
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
- export { start };
15
+ //#endregion
16
+ export { start };
@@ -1,3 +1,6 @@
1
- import { QQBotRegistry } from './sdk/registry';
2
- export declare const getQQBotRegistry: () => QQBotRegistry;
3
- export declare const start: () => void;
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 };
@@ -1,47 +1,137 @@
1
- import { getQQBotConfig, getQQBotBots } from './config.js';
2
- import { QQBotRegistry } from './sdk/registry.js';
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
- const config = getQQBotConfig();
8
- const { bots, defaultBot } = getQQBotBots();
9
- const registry = new QQBotRegistry(defaultBot);
10
- activeRegistry = registry;
11
- const notPrivateIntents = [
12
- 'GUILDS',
13
- 'GUILD_MEMBERS',
14
- 'GUILD_MESSAGE_REACTIONS',
15
- 'DIRECT_MESSAGE',
16
- 'PUBLIC_GUILD_MESSAGES'
17
- ];
18
- const isPrivateIntents = [
19
- 'GUILDS',
20
- 'GUILD_MEMBERS',
21
- 'GUILD_MESSAGES',
22
- 'GUILD_MESSAGE_REACTIONS',
23
- 'DIRECT_MESSAGE',
24
- 'FORUMS_EVENT'
25
- ];
26
- const isGroupIntents = ['GROUP_AND_C2C_EVENT'];
27
- const pubIntents = ['INTERACTION'];
28
- const intents = [];
29
- if (config?.is_private) {
30
- intents.push(...isPrivateIntents, ...pubIntents);
31
- }
32
- else {
33
- intents.push(...notPrivateIntents, ...isGroupIntents, ...pubIntents);
34
- }
35
- for (const [botId, botConfig] of bots) {
36
- const client = registry.add(botId, {
37
- ...botConfig,
38
- intents: botConfig.intents || intents,
39
- is_private: botConfig.is_private ?? false,
40
- sandbox: botConfig.sandbox ?? false,
41
- shard: botConfig.shard ?? [0, 1]
42
- });
43
- void client.connect(botConfig.gatewayURL);
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, _qrImagePath, 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
- export { getQQBotRegistry, start };
136
+ //#endregion
137
+ export { getQQBotRegistry, start };
@@ -1,35 +1,38 @@
1
- export type AT_MESSAGE_CREATE_TYPE = {
2
- attachments?: {
3
- id: string;
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
- member: {
22
- joined_at: string;
23
- nick: string;
24
- roles: string[];
25
- };
26
- mentions: {
27
- avatar: string;
28
- bot: boolean;
29
- id: string;
30
- username: string;
31
- }[];
32
- seq: number;
33
- seq_in_channel: string;
34
- timestamp: string;
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
- export type CHANNEL_CREATE_TYPE = {
2
- application_id?: string;
3
- guild_id: string;
4
- id: string;
5
- name: string;
6
- op_user_id: string;
7
- owner_id: string;
8
- parent_id?: string;
9
- permissions?: string;
10
- position?: number;
11
- private_type: number;
12
- speak_permission: number;
13
- sub_type: number;
14
- type: number;
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 { };