mirai-js 2.8.3 → 2.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. package/1.mp3 +0 -0
  2. package/README.md +2 -0
  3. package/demo.ts +3 -6
  4. package/dist/browser/mirai-js.js +1 -1
  5. package/dist/node/borwserEntry.js +21 -0
  6. package/dist/node/core/uploadVoice.js +1 -1
  7. package/dist/node/lib/index.ts +0 -0
  8. package/index.ts +36 -3
  9. package/package.json +1 -1
  10. package/src/borwserEntry.js +11 -0
  11. package/src/core/uploadVoice.js +1 -1
  12. package/src/lib/index.ts +0 -0
  13. package/srcold/BaseType.d.ts +419 -0
  14. package/srcold/Bot.d.ts +567 -0
  15. package/srcold/Bot.js +1208 -0
  16. package/srcold/FileManager.js +270 -0
  17. package/srcold/Message.d.ts +66 -0
  18. package/srcold/Message.js +314 -0
  19. package/srcold/Middleware.d.ts +170 -0
  20. package/srcold/Middleware.js +657 -0
  21. package/srcold/Waiter.d.ts +13 -0
  22. package/srcold/Waiter.js +24 -0
  23. package/srcold/core/anno/deleteAnno.js +43 -0
  24. package/srcold/core/anno/getAnno.js +44 -0
  25. package/srcold/core/anno/publishAnno.js +44 -0
  26. package/srcold/core/auth.js +40 -0
  27. package/srcold/core/fs/deleteGroupFile.js +45 -0
  28. package/srcold/core/fs/getGroupFileInfo.js +46 -0
  29. package/srcold/core/fs/getGroupFileList.js +47 -0
  30. package/srcold/core/fs/makeGroupDir.js +45 -0
  31. package/srcold/core/fs/moveGroupFile.js +47 -0
  32. package/srcold/core/fs/renameGroupFile.js +44 -0
  33. package/srcold/core/fs/uploadGroupFIle.js +58 -0
  34. package/srcold/core/getFriendList.js +37 -0
  35. package/srcold/core/getGroupConfig.js +37 -0
  36. package/srcold/core/getGroupList.js +37 -0
  37. package/srcold/core/getMemberInfo.js +41 -0
  38. package/srcold/core/getMemberList.js +49 -0
  39. package/srcold/core/getSessionConfig.js +39 -0
  40. package/srcold/core/getUserProfile.js +40 -0
  41. package/srcold/core/messageFromId.js +40 -0
  42. package/srcold/core/mute.js +41 -0
  43. package/srcold/core/muteAll.js +39 -0
  44. package/srcold/core/quitGroup.js +40 -0
  45. package/srcold/core/recall.js +39 -0
  46. package/srcold/core/releaseSession.js +41 -0
  47. package/srcold/core/removeFriend.js +40 -0
  48. package/srcold/core/removeMember.js +42 -0
  49. package/srcold/core/responseBotInvitedJoinGroupRequest.js +46 -0
  50. package/srcold/core/responseFirendRequest.js +45 -0
  51. package/srcold/core/responseMemberJoinRequest.js +47 -0
  52. package/srcold/core/sendCommand.js +41 -0
  53. package/srcold/core/sendFriendMessage.js +43 -0
  54. package/srcold/core/sendGroupMessage.js +43 -0
  55. package/srcold/core/sendImageMessage.js +4 -0
  56. package/srcold/core/sendNudge.js +43 -0
  57. package/srcold/core/sendTempMessage.js +55 -0
  58. package/srcold/core/setEssence.js +44 -0
  59. package/srcold/core/setGroupConfig.js +58 -0
  60. package/srcold/core/setMemberAdmin.js +44 -0
  61. package/srcold/core/setMemberInfo.js +48 -0
  62. package/srcold/core/setSessionConfig.js +41 -0
  63. package/srcold/core/startListeningBrowser.js +62 -0
  64. package/srcold/core/startListeningNode.js +74 -0
  65. package/srcold/core/stopListeningBrowser.js +34 -0
  66. package/srcold/core/stopListeningNode.js +34 -0
  67. package/srcold/core/unmute.js +40 -0
  68. package/srcold/core/unmuteAll.js +39 -0
  69. package/srcold/core/uploadImage.js +55 -0
  70. package/srcold/core/uploadVoice.js +54 -0
  71. package/srcold/core/verify.js +41 -0
  72. package/srcold/index.d.ts +10 -0
  73. package/srcold/index.js +21 -0
  74. package/srcold/interface.js +20 -0
  75. package/srcold/polyfill/URL.js +5 -0
  76. package/srcold/polyfill/wsListener.js +6 -0
  77. package/srcold/typeHelpers.d.ts +2 -0
  78. package/srcold/util/errCode.js +23 -0
  79. package/srcold/util/errorHandler.js +24 -0
  80. package/srcold/util/getInvalidParamsString.js +12 -0
  81. package/srcold/util/isBrowserEnv.js +3 -0
  82. package/srcold/util/random.js +6 -0
  83. package/webpack.config.js +3 -2
@@ -0,0 +1,170 @@
1
+ import { Processor, EventType, MessageChainElementTypes, MessageType } from './BaseType';
2
+ import { Bot } from './Bot';
3
+ import { ArrayToValuesUnion } from './typeHelpers';
4
+
5
+ export class Middleware<CTX = { [key: string]: any }> {
6
+ private middleware: ((data: any, next: Middleware.NextMiddlewareCaller) => any)[];
7
+ private catcher: (error: any) => any;
8
+
9
+ /**
10
+ * @description 自动重新登陆
11
+ * @param bot 欲重新登陆的 Bot 实例
12
+ * @param baseUrl mirai-api-http server 的地址
13
+ * @param verifyKey mirai-api-http server 设置的 verifyKey
14
+ * @param password 欲重新登陆的 qq 密码
15
+ */
16
+ autoReLogin({ bot, baseUrl, verifyKey, password }: Middleware.AutoReLoginOptions): Middleware<CTX>;
17
+
18
+ /**
19
+ * @description 自动重建 ws 连接
20
+ * @param bot 欲重连的 Bot 实例
21
+ */
22
+ autoReconnection(bot: Bot): Middleware<CTX>;
23
+
24
+ /**
25
+ * @description 过滤出指定类型的消息,消息类型为 key,对应类型的
26
+ * message 数组为 value,置于 data.classified
27
+ * @param typeArr message 的类型,例如 Plain Image Voice
28
+ */
29
+ messageProcessor<U extends MessageChainElementTypes[]>(typeArr: U): Middleware<CTX & { classified: { [type in ArrayToValuesUnion<U>]: any[] } }>;
30
+
31
+ /**
32
+ * @description 过滤出字符串类型的 message,并拼接在一起,置于 data.text
33
+ */
34
+ textProcessor(): Middleware<CTX & { text: string }>;
35
+
36
+ /**
37
+ * @description 过滤出消息 id,置于 data.messageId
38
+ */
39
+ messageIdProcessor(): Middleware<CTX & { messageId: string }>;
40
+
41
+ /**
42
+ * @description 过滤指定的群消息
43
+ * @param groupArr 允许通过的群号数组
44
+ * @param allow 允许通过还是禁止通过
45
+ */
46
+ groupFilter(groupArr: number[], allow?: boolean): Middleware<CTX>;
47
+
48
+ /**
49
+ * @description 过滤指定的好友消息
50
+ * @param friendArr 好友 qq 号数组
51
+ * @param allow 允许通过还是禁止通过
52
+ */
53
+ friendFilter(friendArr: number[], allow?: boolean): Middleware<CTX>;
54
+
55
+ /**
56
+ * @description 过滤指定群的群成员的消息
57
+ * @param groupMemberMap 群和成员的 Map
58
+ * @param allow 允许通过还是禁止通过
59
+ * 结构 { number => number[], } key 为允许通过的群号,value 为该群允许通过的成员 qq
60
+ */
61
+ groupMemberFilter(groupMemberMap: Middleware.GroupMemberMap, allow?: boolean): Middleware<CTX>;
62
+
63
+ /**
64
+ * @description 这是一个对话锁,保证群中同一成员不能在中途触发处理器
65
+ * @use 在你需要保护的过程结束后调用 data.unlock 即可
66
+ */
67
+ memberLock({ autoUnlock }?: Middleware.LockOptions): Middleware<CTX & { unlock: () => void }>;
68
+
69
+ /**
70
+ * @description 这是一个对话锁,保证同一好友不能在中途触发处理器
71
+ * @use 在你需要保护的过程结束后调用 data.unlock 即可
72
+ */
73
+ friendLock({ autoUnlock }?: Middleware.LockOptions): Middleware<CTX & { unlock: () => void }>;
74
+
75
+ /**
76
+ * @description 过滤包含指定 @ 信息的消息
77
+ * @param atArr 必选,qq 号数组
78
+ * @param allow 可选,允许通过还是禁止通过
79
+ */
80
+ atFilter(friendArr: number[], allow?: boolean): Middleware<CTX>;
81
+
82
+ /**
83
+ * @description 用于 NewFriendRequestEvent 的中间件,经过该中间件后,将在 data 下放置三个方法
84
+ * agree、refuse、refuseAndAddBlacklist,调用后将分别进行好友请求的 同意、拒绝和拒绝并加入黑名单
85
+ */
86
+ friendRequestProcessor(): Middleware<CTX & { agree: () => void, refuse: () => void, refuseAndAddBlacklist: () => void }>;
87
+
88
+ /**
89
+ * ! mirai-core 的问题,有时候收不到 MemberJoinRequestEvent 事件
90
+ * 该功能未经测试
91
+ * @description 用于 MemberJoinRequestEvent 的中间件,经过该中间件后,将在 data 下放置五个方法
92
+ * agree 同意
93
+ * refuse 拒绝
94
+ * ignore 忽略
95
+ * refuseAndAddBlacklist 拒绝并移入黑名单
96
+ * ignoreAndAddBlacklist 忽略并移入黑名单
97
+ */
98
+ memberJoinRequestProcessor(): Middleware<CTX & {
99
+ agree: () => void, refuse: () => void, ignore: () => void,
100
+ refuseAndAddBlacklist: () => void, ignoreAndAddBlacklist: () => void,
101
+ }>;
102
+
103
+ /**
104
+ * ! 目前被邀请入群不会触发 BotInvitedJoinGroupRequestEvent 事件
105
+ * 该功能未经测试
106
+ * @description 用于 BotInvitedJoinGroupRequestEvent 的中间件,经过该中间件后,将在 data 下放置两个方法
107
+ * agree 同意
108
+ * refuse 拒绝
109
+ */
110
+ invitedJoinGroupRequestProcessor(): Middleware<CTX & { agree: () => void, refuse: () => void }>;
111
+
112
+ /**
113
+ * @description Waiter 的包装器,提供方便的同步 IO 方式
114
+ */
115
+ syncWrapper(): Middleware<CTX & {
116
+ waitFor: {
117
+ groupMember: (qq: number) => {
118
+ messageChain: () => Promise<MessageType[]>,
119
+ text: () => Promise<string>,
120
+ custom: <R>(processor: () => R) => Promise<R>,
121
+ },
122
+ friend: (qq) => {
123
+ messageChain: () => Promise<MessageType[]>,
124
+ text: () => Promise<string>,
125
+ custom: <R>(processor: () => R) => Promise<R>,
126
+ },
127
+ messageChain: () => Promise<MessageType[]>,
128
+ text: Promise<string>,
129
+ custom: <R>(processor: () => R) => Promise<R>,
130
+ }
131
+ }>;
132
+
133
+ /**
134
+ * @description 添加一个自定义中间件
135
+ * @param callback (data, next) => void
136
+ */
137
+ use(callback: (data: CTX, next: Middleware.NextMiddlewareCaller) => any): Middleware<CTX>;
138
+
139
+ /**
140
+ * @description 使用错误处理器
141
+ * @param catcher 错误处理器 (err) => void
142
+ */
143
+ catch(catcher: (error: any) => any): Middleware<CTX>;
144
+
145
+ /**
146
+ * @description 生成一个带有中间件的事件处理器
147
+ * @param callback 事件处理器
148
+ */
149
+ done<E extends EventType[]>(callback: Processor<E, CTX>): Processor<E, CTX>;
150
+
151
+ }
152
+
153
+ declare namespace Middleware {
154
+ type NextMiddlewareCaller = () => NextMiddlewareCaller | Processor;
155
+
156
+ interface GroupMemberMap {
157
+ [group: number]: number[];
158
+ }
159
+
160
+ interface AutoReLoginOptions {
161
+ bot: Bot;
162
+ baseUrl: string;
163
+ verifyKey: string;
164
+ password: string;
165
+ }
166
+
167
+ interface LockOptions {
168
+ autoUnlock?: boolean;
169
+ }
170
+ }