-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathguoba.support.js
414 lines (414 loc) · 13.3 KB
/
guoba.support.js
1
2
3
4
5
6
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
import path from 'path';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
import cfg from './lib/xxCfg.js';
import fs from 'fs';
import yaml from 'yaml';
import lodash from 'lodash'
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
export function supportGuoba() {
return {
pluginInfo: {
name: `air-plugin`,
title: 'air插件(air-plugin)',
author: ['@冷曦', '@Ts霆生'],
authorLink: ['https://github.com/lengxi-root/', 'https://github.com/Ts-yf'],
link: 'https://github.com/lengxi-root/air-plugin',
isV4: true,
isV3: true,
isV2: false,
description: `伊蕾娜Api与全局消息转换`,
icon: 'mdi:stove',
iconColor: '#d19f56',
iconPath: path.join(__dirname, 'main/res/img/icon.png')
},
configInfo: {
schemas: [
{
component: 'Divider',
label: '全局消息转换设置'
},
{
field: 'toimg.open',
label: '全局转图模式',
bottomHelpMessage: '将消息用md语法转换成纯图片',
component: 'Switch'
},
{
field: 'MsgUrl',
label: '消息url配置',
bottomHelpMessage: '非必填,请看README.md设置教程和搭建服务',
component: 'Input',
required: false,
componentProps: {
placeholder: '如:https://vst.qqmsg.cn/url?url=',
}
},
{
field: 'imgbot',
label: '频道图床botQQ',
bottomHelpMessage: '使用全局转换功能必填( 花瓣-频道 二选一),配置此项则优先使用频道图床',
component: 'Input',
required: false,
componentProps: {
placeholder: '使用bot的QQ号,将使用此bot向频道发送图片',
}
},
{
field: 'imgchannelid',
label: '频道图床子频道id',
bottomHelpMessage: '使用全局转换功能必填,向指定频道发送图片,建议使用私人子频道',
component: 'Input',
required: false,
componentProps: {
placeholder: '在频道向机器人发消息,看后台日志自行获取',
}
},
{
field: 'imgck',
label: '花瓣图床配置',
bottomHelpMessage: '使用全局转换功能必填,使用浏览器访问huaban.com自行获取cookie',
component: 'Input',
required: false,
componentProps: {
placeholder: '请求标头的cookie值的全部内容',
}
},
{
component: 'Divider',
label: 'Ark卡片设置'
},
{
field: 'Ark',
label: 'Ark卡片模式',
bottomHelpMessage: '仅官方Bot开启使用,其他请关闭',
component: 'Switch'
},
{
field: 'msgReset',
label: '全局转Ark',
bottomHelpMessage: '将其他插件的消息转换成Ark',
component: 'Switch'
},
{
field: 'Ark_users',
label: 'Ark白名单',
bottomHelpMessage: '填写Bot账号QQ号',
component: 'GTags',
componentProps: {
allowAdd: true,
allowDel: true,
},
},
{
field: 'Ark_set.Text_wx',
label: '文本卡片外显',
bottomHelpMessage: '非必填,在消息列表查看的文字',
component: 'Input',
required: false,
componentProps: {
placeholder: '',
}
},
{
field: 'Ark_set.Text',
label: '文卡消息格式',
bottomHelpMessage: '非必填,文本卡片内容格式,自由搭配,可用变量:[消息内容],[换行],[时间],[一言]',
component: 'Input',
required: false,
componentProps: {
placeholder: '例子:BotName[换行][时间][换行][消息内容][换行][一言]',
}
},
{
field: 'Ark_set.img_wx',
label: '大图卡片外显',
bottomHelpMessage: '非必填,在消息列表查看的文字',
component: 'Input',
required: false,
componentProps: {
placeholder: '留空则使用文本卡片标题',
}
},
{
field: 'Ark_set.img_bt',
label: '大图卡片标题',
bottomHelpMessage: '非必填,大图卡片大标题,可用变量:[时间],[一言]',
component: 'Input',
required: false,
componentProps: {
placeholder: '留空则不使用标题,不宜过长',
}
},
{
field: 'Ark_set.img_xbt',
label: '大图卡片小标题',
bottomHelpMessage: '非必填,大图卡片小标题,可用变量:[时间],[一言]',
component: 'Input',
required: false,
componentProps: {
placeholder: '留空则不使用小标题,不宜过长',
}
},
{
component: 'Divider',
label: 'Markdown类设置'
},
{
field: 'markdown.mds',
label: '使用原生md',
bottomHelpMessage: '转换成自定义markdown文本格式(此功能为全局,无白名单)',
component: 'Switch'
},
{
field: 'markdown.Text',
label: 'md消息格式',
bottomHelpMessage: '非必填,markdown内容格式,自由搭配,可用变量:[消息内容],[换行],[时间],[一言]',
component: 'Input',
required: false,
componentProps: {
placeholder: '例子:BotName[换行][时间][换行][消息内容][换行][一言]',
}
},
{
field: 'button.open',
label: '开启按钮',
bottomHelpMessage: '在每一条消息最后发送按钮',
component: 'Switch'
},
{
field: 'button.btn_users',
label: '模板md白名单',
bottomHelpMessage: '填写Bot账号QQ号,只能填一个(懒得弄对应了)',
component: 'GTags',
componentProps: {
allowAdd: true,
allowDel: true,
},
},
{
field: 'button.template',
label: '按钮模板id',
bottomHelpMessage: '按钮的模板id',
component: 'Input',
required: false,
componentProps: {
placeholder: '只能填一个',
}
},
{
field: 'markdown.text_open',
label: '开启纯文模板',
bottomHelpMessage: '纯文转换模板md',
component: 'Switch'
},
{
field: 'markdown.text_id',
label: '纯文模板id',
bottomHelpMessage: '纯文字使用的md模板id',
component: 'Input',
required: false,
componentProps: {
placeholder: '114_514',
}
},
{
field: 'markdown.text_a',
label: '纯文模板参数',
bottomHelpMessage: '纯文字使用的md模板参数',
component: 'Input',
required: false,
componentProps: {
placeholder: 'a',
}
},
{
field: 'markdown.img_open',
label: '开启图片模板',
bottomHelpMessage: '图片转换模板md',
component: 'Switch'
},
{
field: 'markdown.img_id',
label: '图片模板id',
bottomHelpMessage: '纯图片使用的md模板id',
component: 'Input',
required: false,
componentProps: {
placeholder: '114_514',
}
},
{
field: 'markdown.img_px',
label: '图片模板大小参数',
bottomHelpMessage: '纯图片使用的md模板参数',
component: 'Input',
required: false,
componentProps: {
placeholder: 'imgsize模板参数格式:![{{.imgsize}}]({{.imgurl}})',
}
},
{
field: 'markdown.img_url',
label: '图片模板链接参数',
bottomHelpMessage: '纯图片使用的md模板参数',
component: 'Input',
required: false,
componentProps: {
placeholder: 'imgurl模板参数格式:![{{.imgsize}}]({{.imgurl}})',
}
},
{
field: 'markdown.mix_open',
label: '开启图文模板',
bottomHelpMessage: '图文转换模板md',
component: 'Switch'
},
{
field: 'markdown.mix_id',
label: '图文模板id',
bottomHelpMessage: '图文模板使用的md模板id',
component: 'Input',
required: false,
componentProps: {
placeholder: '114_514',
}
},
{
field: 'markdown.mix_text',
label: '图文模板文字参数',
bottomHelpMessage: '图文模板使用的md模板参数',
component: 'Input',
required: false,
componentProps: {
placeholder: 'text模板参数格式:# {{.text}}![{{.imgsize}}]({{.imgurl}})',
}
},
{
field: 'markdown.mix_px',
label: '图文模板大小参数',
bottomHelpMessage: '图文模板使用的md模板参数',
component: 'Input',
required: false,
componentProps: {
placeholder: 'imgsize模板参数格式:# {{.text}}![{{.imgsize}}]({{.imgurl}})',
}
},
{
field: 'markdown.mix_url',
label: '图文模板链接参数',
bottomHelpMessage: '图文模板使用的md模板参数',
component: 'Input',
required: false,
componentProps: {
placeholder: 'imgurl模板参数格式:# {{.text}}![{{.imgsize}}]({{.imgurl}})',
}
},
{
component: 'Divider',
label: '官机代发设置'
},
{
field: 'msgServer.sendcmd',
label: '发送响应指令',
bottomHelpMessage: '数据账号用来发送获取MsgID时发送的指令',
component: 'Input',
required: false,
componentProps: {
placeholder: '填入指令名',
}
},
{
field: 'msgServer.open',
label: '官机代发模式',
bottomHelpMessage: '使用官机代发消息,仅群消息可用',
component: 'Switch'
},
{
field: 'msgServer.auto',
label: '免艾特代发模式',
bottomHelpMessage: '使用类似主动的方法代发(需要搭配https://gitee.com/ts-yf/QQBot-Plugin使用)',
component: 'Switch'
},
{
field: 'msgServer.userbot',
label: '代发数据账号',
bottomHelpMessage: '用来接收消息数据的账号',
component: 'Input',
required: false,
componentProps: {
placeholder: '填入QQ号',
}
},
{
field: 'msgServer.robot',
label: '代发发送账号',
bottomHelpMessage: '用来发送息数据的账号',
component: 'Input',
required: false,
componentProps: {
placeholder: '填入QQ号',
}
},
{
field: 'msgServer.group',
label: '代发群白名单',
bottomHelpMessage: '填写真·QQ群号',
component: 'GTags',
componentProps: {
allowAdd: true,
allowDel: true,
},
},
{
component: 'Divider',
label: '智能体聊天设置'
},
{
field: 'chat.appid',
label: '智能体appid',
bottomHelpMessage: '智能体id',
component: 'Input',
required: false,
componentProps: {
placeholder: '请输入智能体id',
}
},
{
field: 'chat.token',
label: '智能体token',
bottomHelpMessage: '智能体token',
component: 'Input',
required: false,
componentProps: {
placeholder: '请输入智能体token',
}
}
],
async getConfigData() {
let config = await cfg.getConfig(`air`, `config`)
return config;
},
async setConfigData(data, { Result }) {
// 1.读取现有配置文件
const configFilePath = path.join(__dirname, 'config', 'air.config.yaml');
let config = {};
if (fs.existsSync(configFilePath)) {
const configContent = fs.readFileSync(configFilePath, 'utf8');
config = yaml.parse(configContent) || {};
}
// 2. 更新配置对象
for (const [keyPath, value] of Object.entries(data)) {
lodash.set(config, keyPath, value);
}
// 3. 将更新后的配置对象写回文件
// const updatedConfigYAML = yaml.stringify(config);
// fs.writeFileSync(configFilePath, updatedConfigYAML, 'utf8');
await cfg.saveSet('air', 'config', 'config', config)
logger.mark(`[AIR:配置文件]配置文件更新`)
return Result.ok({}, '保存成功~');
}
}
}
}