alemonjs 1.0.50 → 1.0.52

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 (53) hide show
  1. package/lib/client/types.js +1 -0
  2. package/lib/client/typing.js +1 -0
  3. package/lib/config/login.js +3 -1
  4. package/lib/core/configs.js +1 -1
  5. package/lib/core/typings.js +2 -1
  6. package/lib/define/main.js +4 -0
  7. package/lib/define/map.js +12 -4
  8. package/lib/kook/alemon/segment.js +2 -0
  9. package/lib/logs.js +5 -5
  10. package/lib/ntqq/alemon/message/C2C_MESSAGE_CREATE.js +2 -2
  11. package/lib/ntqq/alemon/message/GROUP_AT_MESSAGE_CREATE.js +2 -2
  12. package/lib/ntqq/alemon/segment.js +3 -1
  13. package/lib/one/alemon/bot.js +11 -0
  14. package/lib/one/alemon/conversation.js +26 -0
  15. package/lib/one/alemon/message/DIRECT_MESSAGE.js +296 -0
  16. package/lib/one/alemon/message/MESSAGES.js +337 -0
  17. package/lib/one/alemon/segment.js +35 -0
  18. package/lib/one/index.js +22 -0
  19. package/lib/one/login.js +19 -0
  20. package/lib/one/one.js +6 -0
  21. package/lib/one/sdk/types.js +84 -0
  22. package/lib/one/sdk/wss.js +36 -0
  23. package/lib/qq/alemon/segment.js +2 -0
  24. package/lib/villa/alemon/message/GUILDS.js +2 -2
  25. package/lib/villa/alemon/message/GUILD_MEMBERS.js +2 -2
  26. package/lib/villa/alemon/message/GUILD_MESSAGE_REACTIONS.js +2 -2
  27. package/lib/villa/alemon/message/MESSAGES.js +2 -2
  28. package/lib/villa/alemon/message/MESSAGE_AUDIT.js +2 -2
  29. package/lib/villa/alemon/segment.js +3 -1
  30. package/logs.d.ts +1 -4
  31. package/logs.js +5 -5
  32. package/package.json +3 -1
  33. package/types/client/types.d.ts +154 -0
  34. package/types/client/typing.d.ts +72 -0
  35. package/types/config/types.d.ts +2 -0
  36. package/types/core/typings.d.ts +10 -238
  37. package/types/default/types.d.ts +5 -0
  38. package/types/define/map.d.ts +1 -0
  39. package/types/kook/alemon/segment.d.ts +2 -0
  40. package/types/logs.d.ts +1 -1
  41. package/types/ntqq/alemon/segment.d.ts +3 -1
  42. package/types/one/alemon/bot.d.ts +8 -0
  43. package/types/one/alemon/conversation.d.ts +10 -0
  44. package/types/one/alemon/message/DIRECT_MESSAGE.d.ts +9 -0
  45. package/types/one/alemon/message/MESSAGES.d.ts +9 -0
  46. package/types/one/alemon/segment.d.ts +27 -0
  47. package/types/one/index.d.ts +1 -0
  48. package/types/one/login.d.ts +7 -0
  49. package/types/one/one.d.ts +29 -0
  50. package/types/one/sdk/types.d.ts +310 -0
  51. package/types/one/sdk/wss.d.ts +9 -0
  52. package/types/qq/alemon/segment.d.ts +2 -0
  53. package/types/villa/alemon/segment.d.ts +3 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -6,6 +6,7 @@ import { defineKOOK as kook } from '../kook/kook.js';
6
6
  import { defineVILLA as villa } from '../villa/villa.js';
7
7
  import { defineQQ as qq } from '../qq/qq.js';
8
8
  import { defineNtqq as ntqq } from '../ntqq/ntqq.js';
9
+ import { defineOne as one } from '../one/one.js';
9
10
  /**
10
11
  * *************
11
12
  * defset-config
@@ -19,7 +20,8 @@ const config = {
19
20
  qq,
20
21
  ntqq,
21
22
  server,
22
- puppeteer
23
+ puppeteer,
24
+ one
23
25
  };
24
26
  /**
25
27
  * 设置机器人基础配置
@@ -4,7 +4,7 @@
4
4
  * ***********
5
5
  */
6
6
  const ApplicationProcessingConfiguration = {
7
- dir: '/application',
7
+ dir: '/plugins',
8
8
  main: '/main',
9
9
  type: 'stript',
10
10
  openRegex: /./,
@@ -9,7 +9,8 @@ export const PlatformEnum = [
9
9
  'wechat',
10
10
  'telegram',
11
11
  'dodo',
12
- 'discord'
12
+ 'discord',
13
+ 'one'
13
14
  ];
14
15
  /**
15
16
  * 消息枚举
@@ -130,6 +130,10 @@ export async function defineAlemonConfig(Options) {
130
130
  // 自定义覆盖
131
131
  setBotConfigByKey('villa', Options.login.villa);
132
132
  }
133
+ if (Options.login?.one) {
134
+ // 自定义覆盖
135
+ setBotConfigByKey('one', Options.login.one);
136
+ }
133
137
  for (const item in Options.login) {
134
138
  if (arr.indexOf(item) != -1)
135
139
  continue;
package/lib/define/map.js CHANGED
@@ -8,7 +8,7 @@ export const rebotMap = {
8
8
  const { createAlemonByQQ: qq } = await import('../qq/index.js');
9
9
  return qq().catch(err => {
10
10
  console.error(err);
11
- console.error('QQ bot open err');
11
+ console.error('QQ BOT open err');
12
12
  return false;
13
13
  });
14
14
  },
@@ -16,7 +16,7 @@ export const rebotMap = {
16
16
  const { createAlemonByVilla: villa } = await import('../villa/index.js');
17
17
  return villa().catch(err => {
18
18
  console.error(err);
19
- console.error('VILLA bot open err');
19
+ console.error('VILLA BOT open err');
20
20
  return false;
21
21
  });
22
22
  },
@@ -24,7 +24,7 @@ export const rebotMap = {
24
24
  const { createAlemonByKOOK: kook } = await import('../kook/index.js');
25
25
  return kook().catch(err => {
26
26
  console.error(err);
27
- console.error('KOOK bot open err');
27
+ console.error('KOOK BOT open err');
28
28
  return false;
29
29
  });
30
30
  },
@@ -32,7 +32,15 @@ export const rebotMap = {
32
32
  const { createAlemonByNtqq: ntqq } = await import('../ntqq/index.js');
33
33
  return ntqq().catch(err => {
34
34
  console.error(err);
35
- console.error('NTQQ bot open err');
35
+ console.error('NTQQ BOT open err');
36
+ return false;
37
+ });
38
+ },
39
+ one: async () => {
40
+ const { createAlemonByONE: one } = await import('../one/index.js');
41
+ return one().catch(err => {
42
+ console.error(err);
43
+ console.error('ONE BOT open err');
36
44
  return false;
37
45
  });
38
46
  }
@@ -1,3 +1,4 @@
1
+ import { getPathBuffer } from '../../core/buffer.js';
1
2
  export const segmentKOOK = {
2
3
  /**
3
4
  * 艾特某人
@@ -14,6 +15,7 @@ export const segmentKOOK = {
14
15
  atAll: () => {
15
16
  return `(met)all(met)`;
16
17
  },
18
+ img: getPathBuffer,
17
19
  /**
18
20
  * 标注GET请求
19
21
  * @returns
package/lib/logs.js CHANGED
@@ -3,21 +3,21 @@
3
3
  * @param fun 中间值
4
4
  * @param prefix 前缀
5
5
  */
6
- export function setLog(fun, prefix = '[AlemonJS]') {
6
+ export function setLog(fun) {
7
7
  const log = console.log;
8
8
  global.console.log = (...argv) => {
9
- log(prefix, `[${fun()}]`, ...argv);
9
+ log(fun(), ...argv);
10
10
  };
11
11
  const info = console.info;
12
12
  global.console.info = (...argv) => {
13
- info(prefix, `[${fun()}]`, ...argv);
13
+ info(fun(), ...argv);
14
14
  };
15
15
  const error = console.error;
16
16
  global.console.error = (...argv) => {
17
- error(prefix, `[${fun()}]`, ...argv);
17
+ error(fun(), ...argv);
18
18
  };
19
19
  const debug = console.debug;
20
20
  global.console.debug = (...argv) => {
21
- debug(prefix, `[${fun()}]`, ...argv);
21
+ debug(fun(), ...argv);
22
22
  };
23
23
  }
@@ -1,6 +1,6 @@
1
1
  import { InstructionMatching, getUrlbuffer } from '../../../core/index.js';
2
2
  import { ClientNTQQ } from '../../sdk/index.js';
3
- import { segmentQQ } from '../segment.js';
3
+ import { segmentNTQQ } from '../segment.js';
4
4
  import { getBotMsgByNtqq } from '../bot.js';
5
5
  import IMGS from 'image-size';
6
6
  import { ClientKOA } from '../../../koa/index.js';
@@ -137,7 +137,7 @@ export const C2C_MESSAGE_CREATE = async (event) => {
137
137
  e.user_name = '柠檬冲水';
138
138
  e.channel_id = event.author.user_openid; // 私聊重置为用户open编号
139
139
  e.guild_id = event.author.user_openid;
140
- e.segment = segmentQQ;
140
+ e.segment = segmentNTQQ;
141
141
  e.at_users = [];
142
142
  e.at_user = {
143
143
  id: '0',
@@ -1,6 +1,6 @@
1
1
  import { InstructionMatching, getUrlbuffer } from '../../../core/index.js';
2
2
  import { ClientNTQQ } from '../../sdk/index.js';
3
- import { segmentQQ } from '../segment.js';
3
+ import { segmentNTQQ } from '../segment.js';
4
4
  import { getBotMsgByNtqq } from '../bot.js';
5
5
  import { getBotConfigByKey } from '../../../config/index.js';
6
6
  import { ClientKOA } from '../../../koa/index.js';
@@ -165,7 +165,7 @@ export const GROUP_AT_MESSAGE_CREATE = async (event) => {
165
165
  /**
166
166
  * 模块
167
167
  */
168
- e.segment = segmentQQ;
168
+ e.segment = segmentNTQQ;
169
169
  /**
170
170
  * 被艾特的用户
171
171
  */
@@ -1,4 +1,5 @@
1
- export const segmentQQ = {
1
+ import { getPathBuffer } from '../../core/buffer.js';
2
+ export const segmentNTQQ = {
2
3
  /**
3
4
  * 艾特某人
4
5
  * @param uid
@@ -15,6 +16,7 @@ export const segmentQQ = {
15
16
  atAll: () => {
16
17
  return '@everyone';
17
18
  },
19
+ img: getPathBuffer,
18
20
  /**
19
21
  * 标注GET请求
20
22
  * @returns
@@ -0,0 +1,11 @@
1
+ let bot = {
2
+ id: '',
3
+ name: '',
4
+ avatar: 'string'
5
+ };
6
+ export function setBotMsgByONE(val) {
7
+ bot = val;
8
+ }
9
+ export function getBotMsgByONE() {
10
+ return bot;
11
+ }
@@ -0,0 +1,26 @@
1
+ import { setBotMsgByONE } from './bot.js';
2
+ import { DIRECT_MESSAGE } from './message/DIRECT_MESSAGE.js';
3
+ import { MESSAGES } from './message/MESSAGES.js';
4
+ /**
5
+ * 会话控制
6
+ */
7
+ export const conversation = {
8
+ meta: async (socket, event) => {
9
+ if (event.status && event.status.bots) {
10
+ const bot = event.status.bots[0];
11
+ setBotMsgByONE({
12
+ id: bot.self.user_id,
13
+ name: bot.self.nickname,
14
+ avatar: 'string' // 头像是什么
15
+ });
16
+ }
17
+ },
18
+ message: async (socket, event) => {
19
+ if (event.detail_type == 'private') {
20
+ DIRECT_MESSAGE(socket, event);
21
+ }
22
+ else {
23
+ MESSAGES(socket, event);
24
+ }
25
+ }
26
+ };
@@ -0,0 +1,296 @@
1
+ import { getBotConfigByKey } from '../../../config/index.js';
2
+ import { InstructionMatching, getUrlbuffer } from '../../../core/index.js';
3
+ import { getBotMsgByONE } from '../bot.js';
4
+ import { segmentONE } from '../segment.js';
5
+ import { AlemonJSError, AlemonJSLog } from '../../../log/index.js';
6
+ /**
7
+ * 公信事件
8
+ * @param socket
9
+ * @param event
10
+ * @returns
11
+ */
12
+ export async function DIRECT_MESSAGE(socket, event) {
13
+ const cfg = getBotConfigByKey('one');
14
+ const masterID = cfg.masterID;
15
+ const e = {
16
+ platform: 'one',
17
+ bot: getBotMsgByONE(),
18
+ isMaster: event.user_id == masterID ? true : false,
19
+ event: 'MESSAGES',
20
+ eventType: 'CREATE',
21
+ // 撤回
22
+ isRecall: false,
23
+ boundaries: 'publick',
24
+ isGroup: event.detail_type == 'private' ? true : false,
25
+ // 是私
26
+ isPrivate: event.detail_type == 'private' ? true : false,
27
+ // 是私聊
28
+ attribute: event.detail_type == 'private' ? 'single' : 'group'
29
+ };
30
+ /**
31
+ * 消息发送机制
32
+ * @param msg 消息
33
+ * @param img
34
+ * @returns
35
+ */
36
+ e.reply = async (msg, select) => {
37
+ // is buffer
38
+ if (Buffer.isBuffer(msg)) {
39
+ try {
40
+ socket.send(JSON.stringify({
41
+ // 行为 发送消息
42
+ action: 'send_message',
43
+ params: {
44
+ // 私聊回复
45
+ detail_type: event.detail_type,
46
+ // 用户
47
+ user_id: event.user_id,
48
+ // 消息体
49
+ message: [
50
+ {
51
+ type: 'image',
52
+ data: {
53
+ file_id: `base64://${msg.toString('base64')}`
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ echo: '1234'
59
+ }));
60
+ return false;
61
+ }
62
+ catch (err) {
63
+ console.error(err);
64
+ return err;
65
+ }
66
+ }
67
+ if (Array.isArray(msg) && msg.find(item => Buffer.isBuffer(item))) {
68
+ const isBuffer = msg.findIndex(item => Buffer.isBuffer(item));
69
+ const cont = msg
70
+ .map(item => {
71
+ if (typeof item === 'number')
72
+ return String(item);
73
+ return item;
74
+ })
75
+ .filter(element => typeof element === 'string')
76
+ .join('');
77
+ try {
78
+ const buff = msg[isBuffer];
79
+ socket.send(JSON.stringify({
80
+ // 行为 发送消息
81
+ action: 'send_message',
82
+ params: {
83
+ // 私聊回复
84
+ detail_type: event.detail_type,
85
+ // 用户
86
+ user_id: event.user_id,
87
+ // 消息体
88
+ message: [
89
+ {
90
+ type: 'text',
91
+ data: {
92
+ text: cont
93
+ }
94
+ },
95
+ {
96
+ type: 'image',
97
+ data: {
98
+ file_id: `base64://${buff.toString('base64')}`
99
+ }
100
+ }
101
+ ]
102
+ },
103
+ echo: '1234'
104
+ }));
105
+ return false;
106
+ }
107
+ catch (err) {
108
+ console.error(err);
109
+ return err;
110
+ }
111
+ }
112
+ const content = Array.isArray(msg)
113
+ ? msg.join('')
114
+ : typeof msg === 'string'
115
+ ? msg
116
+ : typeof msg === 'number'
117
+ ? `${msg}`
118
+ : '';
119
+ if (content == '')
120
+ return false;
121
+ /**
122
+ * http
123
+ */
124
+ const match = content.match(/<http>(.*?)<\/http>/);
125
+ if (match) {
126
+ const getUrl = match[1];
127
+ const msg = await getUrlbuffer(getUrl);
128
+ if (Buffer.isBuffer(msg)) {
129
+ if (event.detail_type == 'private') {
130
+ socket.send(JSON.stringify({
131
+ // 行为 发送消息 send_group_msg
132
+ action: 'send_message',
133
+ params: {
134
+ // 私聊回复
135
+ detail_type: event.detail_type,
136
+ // 用户
137
+ user_id: event.user_id,
138
+ // 消息体
139
+ message: [
140
+ {
141
+ type: 'image',
142
+ data: {
143
+ file_id: `base64://${msg.toString('base64')}`
144
+ }
145
+ }
146
+ ]
147
+ },
148
+ echo: '1234'
149
+ }));
150
+ }
151
+ else {
152
+ // 群聊
153
+ socket.send(JSON.stringify({
154
+ action: 'send_group_msg',
155
+ params: {
156
+ group_id: '',
157
+ // 消息体
158
+ message: [
159
+ {
160
+ type: 'image',
161
+ data: {
162
+ file_id: `base64://${msg.toString('base64')}`
163
+ }
164
+ }
165
+ ]
166
+ },
167
+ echo: '1234'
168
+ }));
169
+ }
170
+ }
171
+ }
172
+ /**
173
+ * 需要增加解析器
174
+ * <@xxxx> <@everyone>
175
+ */
176
+ socket.send(JSON.stringify({
177
+ // 行为 发送消息
178
+ action: 'send_message',
179
+ params: {
180
+ // 私聊回复
181
+ detail_type: event.detail_type,
182
+ // 用户
183
+ user_id: event.user_id,
184
+ // 消息体
185
+ message: [
186
+ {
187
+ type: 'text',
188
+ data: {
189
+ text: content
190
+ }
191
+ }
192
+ ]
193
+ },
194
+ echo: '1234'
195
+ }));
196
+ return true;
197
+ };
198
+ e.replyCard = async (arr) => {
199
+ for (const item of arr) {
200
+ try {
201
+ if (item.type == 'qq_ark' || item.type == 'qq_embed') {
202
+ console.info('temporarily unavailable');
203
+ return false;
204
+ }
205
+ return false;
206
+ }
207
+ catch (err) {
208
+ console.error(err);
209
+ return err;
210
+ }
211
+ }
212
+ return true;
213
+ };
214
+ /**
215
+ * 发送表情表态
216
+ * @param mid
217
+ * @param boj { emoji_type: number; emoji_id: string }
218
+ * @returns
219
+ */
220
+ e.replyEmoji = async (mid, boj) => {
221
+ console.info('temporarily unavailable');
222
+ return false;
223
+ };
224
+ /**
225
+ * 删除表情表态
226
+ * @param mid
227
+ * @param boj { emoji_type: number; emoji_id: string }
228
+ * @returns
229
+ */
230
+ e.deleteEmoji = async (mid, boj) => {
231
+ console.info('temporarily unavailable');
232
+ return false;
233
+ };
234
+ /**
235
+ * 消息原文
236
+ */
237
+ e.msg_txt = event.raw_message;
238
+ /**
239
+ * 消息
240
+ */
241
+ e.msg = event.raw_message.trim();
242
+ /**
243
+ * 消息编号
244
+ */
245
+ e.msg_id = event.message_id;
246
+ /**
247
+ * 用户编号
248
+ */
249
+ e.user_id = event.user_id;
250
+ /**
251
+ * 用户头像
252
+ */
253
+ e.user_avatar =
254
+ event.platform == 'qq'
255
+ ? `https://q1.qlogo.cn/g?b=qq&s=0&nk=${event.user_id}`
256
+ : 'https://q1.qlogo.cn/g?b=qq&s=0&nk=1715713638';
257
+ /**
258
+ * 用户名
259
+ */
260
+ e.user_name = event.sender.nickname;
261
+ /**
262
+ * 子频道编号
263
+ */
264
+ e.channel_id = '';
265
+ /**
266
+ * 频道编号
267
+ */
268
+ e.guild_id = '';
269
+ /**
270
+ * 模块
271
+ */
272
+ e.segment = segmentONE;
273
+ /**
274
+ * 被艾特的用户
275
+ */
276
+ e.at_users = [];
277
+ /**
278
+ * 艾特消息处理
279
+ */
280
+ e.at = false;
281
+ /**
282
+ * 存在at
283
+ */
284
+ if (e.at) {
285
+ /**
286
+ * 得到第一个艾特
287
+ */
288
+ e.at_user = e.at_users.find(item => item.bot != true);
289
+ }
290
+ /**
291
+ * 业务处理
292
+ */
293
+ return await InstructionMatching(e)
294
+ .then(() => AlemonJSLog(e.channel_id, e.user_name, e.msg_txt))
295
+ .catch(err => AlemonJSError(err, e.channel_id, e.user_name, e.msg_txt));
296
+ }