@alemonjs/qq-bot 2.1.0-alpha.4 → 2.1.0-alpha.5
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/sends.js +321 -261
- package/package.json +1 -1
package/lib/sends.js
CHANGED
|
@@ -147,6 +147,72 @@ const createArkList = (value) => {
|
|
|
147
147
|
]
|
|
148
148
|
};
|
|
149
149
|
};
|
|
150
|
+
// 数据md转为文本
|
|
151
|
+
const createMarkdownText = (data) => {
|
|
152
|
+
const content = data.map(mdItem => {
|
|
153
|
+
if (mdItem.type === 'MD.title') {
|
|
154
|
+
// \n
|
|
155
|
+
return `# ${mdItem.value}\n`;
|
|
156
|
+
}
|
|
157
|
+
else if (mdItem.type === 'MD.subtitle') {
|
|
158
|
+
// \n
|
|
159
|
+
return `## ${mdItem.value}\n`;
|
|
160
|
+
}
|
|
161
|
+
else if (mdItem.type === 'MD.text') {
|
|
162
|
+
// 正文
|
|
163
|
+
return `${mdItem.value} `;
|
|
164
|
+
}
|
|
165
|
+
else if (mdItem.type === 'MD.bold') {
|
|
166
|
+
// 加粗
|
|
167
|
+
return `**${mdItem.value}** `;
|
|
168
|
+
}
|
|
169
|
+
else if (mdItem.type === 'MD.divider') {
|
|
170
|
+
// 分割线
|
|
171
|
+
return '\n————————\n';
|
|
172
|
+
}
|
|
173
|
+
else if (mdItem.type === 'MD.italic') {
|
|
174
|
+
// 斜体
|
|
175
|
+
return `_${mdItem.value}_ `;
|
|
176
|
+
}
|
|
177
|
+
else if (mdItem.type === 'MD.italicStar') {
|
|
178
|
+
// 星号斜体
|
|
179
|
+
return `*${mdItem.value}* `;
|
|
180
|
+
}
|
|
181
|
+
else if (mdItem.type === 'MD.strikethrough') {
|
|
182
|
+
// 删除线
|
|
183
|
+
return `~~${mdItem.value}~~ `;
|
|
184
|
+
}
|
|
185
|
+
else if (mdItem.type === 'MD.blockquote') {
|
|
186
|
+
// \n
|
|
187
|
+
return `> ${mdItem.value}\n`;
|
|
188
|
+
}
|
|
189
|
+
else if (mdItem.type === 'MD.newline') {
|
|
190
|
+
// 换行
|
|
191
|
+
return '\n';
|
|
192
|
+
}
|
|
193
|
+
else if (mdItem.type === 'MD.link') {
|
|
194
|
+
//
|
|
195
|
+
return `[🔗${mdItem.value.text}](${mdItem.value.url}) `;
|
|
196
|
+
}
|
|
197
|
+
else if (mdItem.type === 'MD.image') {
|
|
198
|
+
//
|
|
199
|
+
return ` `;
|
|
200
|
+
}
|
|
201
|
+
else if (mdItem.type === 'MD.list') {
|
|
202
|
+
const listStr = mdItem.value.map((listItem) => {
|
|
203
|
+
// 有序
|
|
204
|
+
if (typeof listItem.value === 'object') {
|
|
205
|
+
return `\n${listItem.value.index}. ${listItem.value.text}`;
|
|
206
|
+
}
|
|
207
|
+
// 无序
|
|
208
|
+
return `\n- ${listItem.value}`;
|
|
209
|
+
});
|
|
210
|
+
return `${listStr}\n`;
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}).join('');
|
|
214
|
+
return content;
|
|
215
|
+
};
|
|
150
216
|
/**
|
|
151
217
|
* 群组消息
|
|
152
218
|
* @param client
|
|
@@ -155,171 +221,158 @@ const createArkList = (value) => {
|
|
|
155
221
|
* @returns
|
|
156
222
|
*/
|
|
157
223
|
const GROUP_AT_MESSAGE_CREATE = async (client, event, val) => {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
else if (item.type == 'Mention') {
|
|
165
|
-
if (item.value == 'everyone' ||
|
|
166
|
-
item.value == 'all' ||
|
|
167
|
-
item.value == '' ||
|
|
168
|
-
typeof item.value != 'string') {
|
|
169
|
-
return ``;
|
|
224
|
+
try {
|
|
225
|
+
const content = val
|
|
226
|
+
.filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
|
|
227
|
+
.map(item => {
|
|
228
|
+
if (item.type == 'Link') {
|
|
229
|
+
return `[${item.value}](${item?.options?.link})`;
|
|
170
230
|
}
|
|
171
|
-
if (item.
|
|
172
|
-
|
|
231
|
+
else if (item.type == 'Mention') {
|
|
232
|
+
if (item.value == 'everyone' ||
|
|
233
|
+
item.value == 'all' ||
|
|
234
|
+
item.value == '' ||
|
|
235
|
+
typeof item.value != 'string') {
|
|
236
|
+
return ``;
|
|
237
|
+
}
|
|
238
|
+
if (item.options?.belong == 'user') {
|
|
239
|
+
return `<@${item.value}>`;
|
|
240
|
+
}
|
|
241
|
+
return '';
|
|
173
242
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
.join('');
|
|
181
|
-
if (content) {
|
|
182
|
-
const res = await Promise.all([content].map(async (item) => {
|
|
243
|
+
else if (item.type == 'Text') {
|
|
244
|
+
return item.value;
|
|
245
|
+
}
|
|
246
|
+
})
|
|
247
|
+
.join('');
|
|
248
|
+
if (content) {
|
|
183
249
|
const res = await client.groupOpenMessages(event.GuildId, {
|
|
184
|
-
content:
|
|
250
|
+
content: content,
|
|
185
251
|
msg_id: event.MessageId,
|
|
186
252
|
msg_type: 0,
|
|
187
253
|
msg_seq: client.getMessageSeq(event.MessageId)
|
|
188
254
|
});
|
|
189
|
-
return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
|
|
190
|
-
|
|
255
|
+
return [createResult(ResultCode.Ok, 'client.groupOpenMessages', {
|
|
256
|
+
id: res.id
|
|
257
|
+
})];
|
|
258
|
+
}
|
|
259
|
+
const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
|
|
260
|
+
if (images && images.length > 0) {
|
|
261
|
+
let url = '';
|
|
262
|
+
images.filter(async (item) => {
|
|
263
|
+
// 已经处理。
|
|
264
|
+
if (url)
|
|
265
|
+
return;
|
|
266
|
+
if (item.type == 'ImageURL') {
|
|
267
|
+
url = item.value;
|
|
268
|
+
}
|
|
269
|
+
else if (item.type === 'ImageFile' || item.type === 'Image') {
|
|
270
|
+
const getFileBase64 = () => readFileSync(item.value, 'base64');
|
|
271
|
+
const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
|
|
272
|
+
const file_info = await client
|
|
273
|
+
.postRichMediaByGroup(event.GuildId, {
|
|
274
|
+
file_type: 1,
|
|
275
|
+
file_data: file_data
|
|
276
|
+
})
|
|
277
|
+
.then(res => res?.file_info);
|
|
278
|
+
if (file_info) {
|
|
279
|
+
url = file_info;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
191
282
|
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
media: {
|
|
204
|
-
file_info: item.value
|
|
205
|
-
},
|
|
206
|
-
msg_id: event.MessageId,
|
|
207
|
-
msg_type: 7,
|
|
208
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
209
|
-
});
|
|
210
|
-
return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
|
|
283
|
+
const res = await client.groupOpenMessages(event.GuildId, {
|
|
284
|
+
content: '',
|
|
285
|
+
media: {
|
|
286
|
+
file_info: url
|
|
287
|
+
},
|
|
288
|
+
msg_id: event.MessageId,
|
|
289
|
+
msg_type: 7,
|
|
290
|
+
msg_seq: client.getMessageSeq(event.MessageId)
|
|
291
|
+
});
|
|
292
|
+
return [
|
|
293
|
+
createResult(ResultCode.Ok, 'client.groupOpenMessages', {
|
|
211
294
|
id: res.id
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
try {
|
|
215
|
-
const getFileBase64 = () => readFileSync(item.value, 'base64');
|
|
216
|
-
const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
|
|
217
|
-
const file_info = await client
|
|
218
|
-
.postRichMediaByGroup(event.GuildId, {
|
|
219
|
-
file_type: 1,
|
|
220
|
-
file_data: file_data
|
|
221
295
|
})
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
296
|
+
];
|
|
297
|
+
}
|
|
298
|
+
const mdAndButtons = val.filter(item => item.type == 'Markdown' || item.type == 'BT.group');
|
|
299
|
+
if (mdAndButtons && mdAndButtons.length > 0) {
|
|
300
|
+
const params = {};
|
|
301
|
+
mdAndButtons.forEach(async (item) => {
|
|
302
|
+
if (item.type === 'BT.group') {
|
|
303
|
+
// 如果是按钮,获取参数
|
|
304
|
+
const template_id = item?.options?.template_id;
|
|
305
|
+
if (template_id) {
|
|
306
|
+
params['keyboard'] = {
|
|
307
|
+
id: template_id
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
const rows = item.value;
|
|
312
|
+
// 构造成按钮
|
|
313
|
+
const content = createButtonsData(rows);
|
|
314
|
+
params['keyboard'] = {
|
|
315
|
+
content: content
|
|
316
|
+
};
|
|
317
|
+
}
|
|
225
318
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
id: res.id
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
return createResult(ResultCode.Fail, error ? error?.message ?? error : 'client.groupOpenMessages', null);
|
|
241
|
-
}
|
|
242
|
-
})).catch(err => [
|
|
243
|
-
createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
|
|
244
|
-
]);
|
|
245
|
-
}
|
|
246
|
-
// buttons
|
|
247
|
-
const buttons = val.filter(item => item.type == 'BT.group');
|
|
248
|
-
if (buttons && buttons.length > 0) {
|
|
249
|
-
return Promise.all(buttons.map(async (item) => {
|
|
250
|
-
const template_id = item?.options?.template_id;
|
|
251
|
-
if (template_id) {
|
|
252
|
-
const res = await client.groupOpenMessages(event.GuildId, {
|
|
253
|
-
content: '',
|
|
254
|
-
msg_id: event.MessageId,
|
|
255
|
-
keyboard: {
|
|
256
|
-
id: template_id
|
|
257
|
-
},
|
|
258
|
-
msg_type: 2,
|
|
259
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
260
|
-
});
|
|
261
|
-
return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
|
|
262
|
-
id: res.id
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
const rows = item.value;
|
|
266
|
-
// 构造成按钮
|
|
267
|
-
const data = createButtonsData(rows);
|
|
319
|
+
else if (item.type === 'Markdown') {
|
|
320
|
+
// 如果是markdown,获取内容
|
|
321
|
+
const content = createMarkdownText(item.value);
|
|
322
|
+
if (content) {
|
|
323
|
+
params['markdown'] = {
|
|
324
|
+
content: content
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
});
|
|
268
329
|
const res = await client.groupOpenMessages(event.GuildId, {
|
|
269
330
|
content: '',
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
content: data
|
|
331
|
+
markdown: {
|
|
332
|
+
content: content,
|
|
273
333
|
},
|
|
334
|
+
msg_id: event.MessageId,
|
|
274
335
|
msg_type: 2,
|
|
275
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
336
|
+
msg_seq: client.getMessageSeq(event.MessageId),
|
|
337
|
+
...params
|
|
276
338
|
});
|
|
277
|
-
return
|
|
278
|
-
id: res.id
|
|
339
|
+
return [
|
|
340
|
+
createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id })
|
|
341
|
+
];
|
|
342
|
+
}
|
|
343
|
+
// ark
|
|
344
|
+
const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
|
|
345
|
+
if (ark && ark.length > 0) {
|
|
346
|
+
const params = {};
|
|
347
|
+
ark.forEach(async (item) => {
|
|
348
|
+
if (item.type === 'Ark.Card') {
|
|
349
|
+
const arkData = createArkCardData(item.value);
|
|
350
|
+
params['ark'] = arkData;
|
|
351
|
+
}
|
|
352
|
+
else if (item.type === 'Ark.BigCard') {
|
|
353
|
+
const arkData = createArkBigCardData(item.value);
|
|
354
|
+
params['ark'] = arkData;
|
|
355
|
+
}
|
|
356
|
+
else if (item.type === 'Ark.list') {
|
|
357
|
+
const arkData = createArkList(item.value);
|
|
358
|
+
params['ark'] = arkData;
|
|
359
|
+
}
|
|
279
360
|
});
|
|
280
|
-
})).catch(err => [
|
|
281
|
-
createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
|
|
282
|
-
]);
|
|
283
|
-
}
|
|
284
|
-
// ark
|
|
285
|
-
const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
|
|
286
|
-
if (ark && ark.length > 0) {
|
|
287
|
-
return Promise.all(ark.map(async (item) => {
|
|
288
|
-
if (item.type === 'Ark.Card') {
|
|
289
|
-
const arkData = createArkCardData(item.value);
|
|
290
|
-
const res = await client.groupOpenMessages(event.GuildId, {
|
|
291
|
-
msg_id: event.MessageId,
|
|
292
|
-
ark: arkData,
|
|
293
|
-
msg_type: 3,
|
|
294
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
295
|
-
});
|
|
296
|
-
return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
|
|
297
|
-
id: res.id
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
if (item.type === 'Ark.BigCard') {
|
|
301
|
-
const arkData = createArkBigCardData(item.value);
|
|
302
|
-
const res = await client.groupOpenMessages(event.GuildId, {
|
|
303
|
-
msg_id: event.MessageId,
|
|
304
|
-
ark: arkData,
|
|
305
|
-
msg_type: 3,
|
|
306
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
307
|
-
});
|
|
308
|
-
return createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id });
|
|
309
|
-
}
|
|
310
|
-
const arkData = createArkList(item.value);
|
|
311
361
|
const res = await client.groupOpenMessages(event.GuildId, {
|
|
312
362
|
msg_id: event.MessageId,
|
|
313
|
-
ark: arkData,
|
|
314
363
|
msg_type: 3,
|
|
315
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
364
|
+
msg_seq: client.getMessageSeq(event.MessageId),
|
|
365
|
+
...params
|
|
316
366
|
});
|
|
317
|
-
return createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id });
|
|
318
|
-
}
|
|
367
|
+
return [createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id })];
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
catch (err) {
|
|
371
|
+
return [
|
|
319
372
|
createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
|
|
320
|
-
]
|
|
373
|
+
];
|
|
321
374
|
}
|
|
322
|
-
return
|
|
375
|
+
return [];
|
|
323
376
|
};
|
|
324
377
|
/**
|
|
325
378
|
* 私聊消息
|
|
@@ -328,149 +381,156 @@ const GROUP_AT_MESSAGE_CREATE = async (client, event, val) => {
|
|
|
328
381
|
* @param val
|
|
329
382
|
* @returns
|
|
330
383
|
*/
|
|
331
|
-
const C2C_MESSAGE_CREATE = (client, event, val) => {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
384
|
+
const C2C_MESSAGE_CREATE = async (client, event, val) => {
|
|
385
|
+
try {
|
|
386
|
+
const content = val
|
|
387
|
+
.filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
|
|
388
|
+
.map(item => {
|
|
389
|
+
if (item.type == 'Link') {
|
|
390
|
+
return `[${item.value}](${item?.options?.link})`;
|
|
391
|
+
}
|
|
392
|
+
else if (item.type == 'Mention') {
|
|
393
|
+
if (item.value == 'everyone' ||
|
|
394
|
+
item.value == 'all' ||
|
|
395
|
+
item.value == '' ||
|
|
396
|
+
typeof item.value != 'string') {
|
|
397
|
+
return ``;
|
|
398
|
+
}
|
|
399
|
+
if (item.options?.belong == 'user') {
|
|
400
|
+
return `<@${item.value}>`;
|
|
401
|
+
}
|
|
402
|
+
return '';
|
|
403
|
+
}
|
|
404
|
+
else if (item.type == 'Text') {
|
|
405
|
+
return item.value;
|
|
406
|
+
}
|
|
407
|
+
})
|
|
408
|
+
.join('');
|
|
409
|
+
if (content) {
|
|
346
410
|
const res = await client.usersOpenMessages(event.OpenId, {
|
|
347
|
-
content:
|
|
411
|
+
content: content,
|
|
348
412
|
msg_id: event.MessageId,
|
|
349
413
|
msg_type: 0,
|
|
350
414
|
msg_seq: client.getMessageSeq(event.MessageId)
|
|
351
415
|
});
|
|
352
|
-
return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
|
|
353
|
-
id: res.id
|
|
354
|
-
});
|
|
355
|
-
})).catch(err => [
|
|
356
|
-
createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
|
|
357
|
-
]);
|
|
358
|
-
}
|
|
359
|
-
const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
|
|
360
|
-
if (images && images.length > 0) {
|
|
361
|
-
return Promise.all(images.map(async (item) => {
|
|
362
|
-
if (item.type == 'ImageURL') {
|
|
363
|
-
const res = await client.usersOpenMessages(event.OpenId, {
|
|
364
|
-
content: '',
|
|
365
|
-
media: {
|
|
366
|
-
file_info: item.value
|
|
367
|
-
},
|
|
368
|
-
msg_id: event.MessageId,
|
|
369
|
-
msg_type: 7,
|
|
370
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
371
|
-
});
|
|
372
|
-
return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
|
|
416
|
+
return [createResult(ResultCode.Ok, 'client.usersOpenMessages', {
|
|
373
417
|
id: res.id
|
|
374
|
-
});
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
.
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
418
|
+
})];
|
|
419
|
+
}
|
|
420
|
+
const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
|
|
421
|
+
if (images && images.length > 0) {
|
|
422
|
+
let url = '';
|
|
423
|
+
images.filter(async (item) => {
|
|
424
|
+
// 已经处理。
|
|
425
|
+
if (url)
|
|
426
|
+
return;
|
|
427
|
+
if (item.type == 'ImageURL') {
|
|
428
|
+
url = item.value;
|
|
429
|
+
}
|
|
430
|
+
else if (item.type === 'ImageFile' || item.type === 'Image') {
|
|
431
|
+
const getFileBase64 = () => readFileSync(item.value, 'base64');
|
|
432
|
+
const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
|
|
433
|
+
const file_info = await client
|
|
434
|
+
.postRichMediaByGroup(event.GuildId, {
|
|
435
|
+
file_type: 1,
|
|
436
|
+
file_data: file_data
|
|
437
|
+
})
|
|
438
|
+
.then(res => res?.file_info);
|
|
439
|
+
if (file_info) {
|
|
440
|
+
url = file_info;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
const res = await client.usersOpenMessages(event.OpenId, {
|
|
387
445
|
content: '',
|
|
388
446
|
media: {
|
|
389
|
-
file_info
|
|
447
|
+
file_info: url
|
|
390
448
|
},
|
|
391
449
|
msg_id: event.MessageId,
|
|
392
450
|
msg_type: 7,
|
|
393
451
|
msg_seq: client.getMessageSeq(event.MessageId)
|
|
394
452
|
});
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
]);
|
|
398
|
-
}
|
|
399
|
-
// buttons
|
|
400
|
-
const buttons = val.filter(item => item.type == 'BT.group');
|
|
401
|
-
if (buttons && buttons.length > 0) {
|
|
402
|
-
return Promise.all(buttons.map(async (item) => {
|
|
403
|
-
const template_id = item?.options?.template_id;
|
|
404
|
-
if (template_id) {
|
|
405
|
-
const res = await client.usersOpenMessages(event.GuildId, {
|
|
406
|
-
content: '',
|
|
407
|
-
msg_id: event.MessageId,
|
|
408
|
-
keyboard: {
|
|
409
|
-
id: template_id
|
|
410
|
-
},
|
|
411
|
-
msg_type: 2,
|
|
412
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
413
|
-
});
|
|
414
|
-
return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
|
|
453
|
+
return [
|
|
454
|
+
createResult(ResultCode.Ok, 'client.usersOpenMessages', {
|
|
415
455
|
id: res.id
|
|
416
|
-
})
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
const
|
|
456
|
+
})
|
|
457
|
+
];
|
|
458
|
+
}
|
|
459
|
+
const mdAndButtons = val.filter(item => item.type == 'Markdown' || item.type == 'BT.group');
|
|
460
|
+
if (mdAndButtons && mdAndButtons.length > 0) {
|
|
461
|
+
const params = {};
|
|
462
|
+
mdAndButtons.forEach(async (item) => {
|
|
463
|
+
if (item.type === 'BT.group') {
|
|
464
|
+
// 如果是按钮,获取参数
|
|
465
|
+
const template_id = item?.options?.template_id;
|
|
466
|
+
if (template_id) {
|
|
467
|
+
params['keyboard'] = {
|
|
468
|
+
id: template_id
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
const rows = item.value;
|
|
473
|
+
// 构造成按钮
|
|
474
|
+
const content = createButtonsData(rows);
|
|
475
|
+
params['keyboard'] = {
|
|
476
|
+
content: content
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
else if (item.type === 'Markdown') {
|
|
481
|
+
// 如果是markdown,获取内容
|
|
482
|
+
const content = createMarkdownText(item.value);
|
|
483
|
+
if (content) {
|
|
484
|
+
params['markdown'] = {
|
|
485
|
+
content: content
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
const res = await client.usersOpenMessages(event.OpenId, {
|
|
422
491
|
content: '',
|
|
423
492
|
msg_id: event.MessageId,
|
|
424
|
-
keyboard: {
|
|
425
|
-
content: data
|
|
426
|
-
},
|
|
427
493
|
msg_type: 2,
|
|
428
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
494
|
+
msg_seq: client.getMessageSeq(event.MessageId),
|
|
495
|
+
...params
|
|
429
496
|
});
|
|
430
|
-
return
|
|
431
|
-
id: res.id
|
|
497
|
+
return [
|
|
498
|
+
createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id })
|
|
499
|
+
];
|
|
500
|
+
}
|
|
501
|
+
// ark
|
|
502
|
+
const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
|
|
503
|
+
if (ark && ark.length > 0) {
|
|
504
|
+
const params = {};
|
|
505
|
+
ark.forEach(async (item) => {
|
|
506
|
+
if (item.type === 'Ark.Card') {
|
|
507
|
+
const arkData = createArkCardData(item.value);
|
|
508
|
+
params['ark'] = arkData;
|
|
509
|
+
}
|
|
510
|
+
else if (item.type === 'Ark.BigCard') {
|
|
511
|
+
const arkData = createArkBigCardData(item.value);
|
|
512
|
+
params['ark'] = arkData;
|
|
513
|
+
}
|
|
514
|
+
else if (item.type === 'Ark.list') {
|
|
515
|
+
const arkData = createArkList(item.value);
|
|
516
|
+
params['ark'] = arkData;
|
|
517
|
+
}
|
|
432
518
|
});
|
|
433
|
-
|
|
434
|
-
createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
|
|
435
|
-
]);
|
|
436
|
-
}
|
|
437
|
-
// ark
|
|
438
|
-
const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
|
|
439
|
-
if (ark && ark.length > 0) {
|
|
440
|
-
return Promise.all(ark.map(async (item) => {
|
|
441
|
-
if (item.type === 'Ark.Card') {
|
|
442
|
-
const arkData = createArkCardData(item.value);
|
|
443
|
-
const res = await client.usersOpenMessages(event.GuildId, {
|
|
444
|
-
msg_id: event.MessageId,
|
|
445
|
-
ark: arkData,
|
|
446
|
-
msg_type: 3,
|
|
447
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
448
|
-
});
|
|
449
|
-
return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
|
|
450
|
-
}
|
|
451
|
-
if (item.type === 'Ark.BigCard') {
|
|
452
|
-
const arkData = createArkBigCardData(item.value);
|
|
453
|
-
const res = await client.usersOpenMessages(event.GuildId, {
|
|
454
|
-
msg_id: event.MessageId,
|
|
455
|
-
ark: arkData,
|
|
456
|
-
msg_type: 3,
|
|
457
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
458
|
-
});
|
|
459
|
-
return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
|
|
460
|
-
}
|
|
461
|
-
const arkData = createArkList(item.value);
|
|
462
|
-
const res = await client.usersOpenMessages(event.GuildId, {
|
|
519
|
+
const res = await client.usersOpenMessages(event.OpenId, {
|
|
463
520
|
msg_id: event.MessageId,
|
|
464
|
-
ark: arkData,
|
|
465
521
|
msg_type: 3,
|
|
466
|
-
msg_seq: client.getMessageSeq(event.MessageId)
|
|
522
|
+
msg_seq: client.getMessageSeq(event.MessageId),
|
|
523
|
+
...params
|
|
467
524
|
});
|
|
468
|
-
return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
|
|
469
|
-
}
|
|
525
|
+
return [createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id })];
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
catch (err) {
|
|
529
|
+
return [
|
|
470
530
|
createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
|
|
471
|
-
]
|
|
531
|
+
];
|
|
472
532
|
}
|
|
473
|
-
return
|
|
533
|
+
return [];
|
|
474
534
|
};
|
|
475
535
|
/**
|
|
476
536
|
* 频道私聊
|