wechaty-web-panel 1.5.8 → 1.6.2
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/CHANGELOG.md +10 -0
- package/dist/cjs/src/common/command.d.ts +14 -0
- package/dist/cjs/src/common/command.js +58 -0
- package/dist/cjs/src/common/index.d.ts +2 -2
- package/dist/cjs/src/common/index.js +28 -15
- package/dist/cjs/src/common/reply.d.ts +1 -1
- package/dist/cjs/src/common/reply.js +2 -2
- package/dist/cjs/src/const/puppet-type.d.ts +23 -0
- package/dist/cjs/src/const/puppet-type.js +63 -0
- package/dist/cjs/src/db/aichatDb.d.ts +27 -0
- package/dist/cjs/src/db/aichatDb.js +83 -0
- package/dist/cjs/src/db/gptConfig.d.ts +17 -0
- package/dist/cjs/src/db/gptConfig.js +75 -0
- package/dist/cjs/src/db/puppetDb.d.ts +19 -0
- package/dist/cjs/src/db/puppetDb.js +68 -0
- package/dist/cjs/src/handlers/on-error.js +1 -1
- package/dist/cjs/src/handlers/on-login.js +9 -1
- package/dist/cjs/src/handlers/on-message.js +10 -5
- package/dist/cjs/src/handlers/on-ready.js +7 -2
- package/dist/cjs/src/handlers/on-roomleave.js +1 -1
- package/dist/cjs/src/handlers/on-scan.js +2 -0
- package/dist/cjs/src/lib/contentCensor.d.ts +8 -0
- package/dist/cjs/src/lib/contentCensor.js +31 -0
- package/dist/cjs/src/lib/officialOpenAi.d.ts +68 -0
- package/dist/cjs/src/lib/officialOpenAi.js +170 -0
- package/dist/cjs/src/lib/unOfficialOpenAi.d.ts +44 -0
- package/dist/cjs/src/lib/unOfficialOpenAi.js +130 -0
- package/dist/cjs/src/package-json.d.ts +1 -3
- package/dist/cjs/src/package-json.js +7 -9
- package/dist/cjs/src/proxy/aibotk.d.ts +18 -0
- package/dist/cjs/src/proxy/aibotk.js +99 -5
- package/dist/cjs/src/proxy/api.d.ts +0 -6
- package/dist/cjs/src/proxy/api.js +26 -46
- package/dist/cjs/src/proxy/bot/chatgpt-web.d.ts +12 -0
- package/dist/cjs/src/proxy/bot/chatgpt-web.js +36 -0
- package/dist/cjs/src/proxy/bot/chatgpt.d.ts +13 -0
- package/dist/cjs/src/proxy/bot/chatgpt.js +36 -0
- package/dist/cjs/src/proxy/bot/dispatch.d.ts +7 -0
- package/dist/cjs/src/proxy/bot/dispatch.js +46 -0
- package/dist/cjs/src/proxy/mqtt.js +10 -0
- package/dist/cjs/src/proxy/openAi.d.ts +3 -15
- package/dist/cjs/src/proxy/openAi.js +32 -119
- package/dist/cjs/src/proxy/openAiHook.d.ts +2 -13
- package/dist/cjs/src/proxy/openAiHook.js +30 -94
- package/dist/cjs/src/proxy/superagent.js +2 -2
- package/dist/cjs/src/proxy/tencent-open.js +92 -58
- package/dist/cjs/src/service/event-dispatch-service.d.ts +1 -1
- package/dist/cjs/src/service/event-dispatch-service.js +4 -4
- package/dist/cjs/src/service/msg-filter-service.d.ts +1 -1
- package/dist/cjs/src/service/msg-filter-service.js +11 -4
- package/dist/cjs/src/service/msg-filters.d.ts +24 -1
- package/dist/cjs/src/service/msg-filters.js +87 -8
- package/dist/cjs/src/task/index.js +5 -5
- package/dist/esm/src/common/command.d.ts +14 -0
- package/dist/esm/src/common/command.js +58 -0
- package/dist/esm/src/common/index.d.ts +2 -2
- package/dist/esm/src/common/index.js +29 -16
- package/dist/esm/src/common/reply.d.ts +1 -1
- package/dist/esm/src/common/reply.js +2 -2
- package/dist/esm/src/const/puppet-type.d.ts +23 -0
- package/dist/esm/src/const/puppet-type.js +58 -0
- package/dist/esm/src/db/aichatDb.d.ts +27 -0
- package/dist/esm/src/db/aichatDb.js +73 -0
- package/dist/esm/src/db/gptConfig.d.ts +17 -0
- package/dist/esm/src/db/gptConfig.js +64 -0
- package/dist/esm/src/db/puppetDb.d.ts +19 -0
- package/dist/esm/src/db/puppetDb.js +58 -0
- package/dist/esm/src/handlers/on-error.js +1 -1
- package/dist/esm/src/handlers/on-login.js +9 -1
- package/dist/esm/src/handlers/on-message.js +10 -5
- package/dist/esm/src/handlers/on-ready.js +7 -2
- package/dist/esm/src/handlers/on-roomleave.js +1 -1
- package/dist/esm/src/handlers/on-scan.js +2 -0
- package/dist/esm/src/lib/contentCensor.d.ts +8 -0
- package/dist/esm/src/lib/contentCensor.js +24 -0
- package/dist/esm/src/lib/officialOpenAi.d.ts +68 -0
- package/dist/esm/src/lib/officialOpenAi.js +165 -0
- package/dist/esm/src/lib/unOfficialOpenAi.d.ts +44 -0
- package/dist/esm/src/lib/unOfficialOpenAi.js +125 -0
- package/dist/esm/src/package-json.d.ts +1 -3
- package/dist/esm/src/package-json.js +7 -9
- package/dist/esm/src/proxy/aibotk.d.ts +18 -0
- package/dist/esm/src/proxy/aibotk.js +97 -4
- package/dist/esm/src/proxy/api.d.ts +0 -6
- package/dist/esm/src/proxy/api.js +25 -45
- package/dist/esm/src/proxy/bot/chatgpt-web.d.ts +12 -0
- package/dist/esm/src/proxy/bot/chatgpt-web.js +27 -0
- package/dist/esm/src/proxy/bot/chatgpt.d.ts +13 -0
- package/dist/esm/src/proxy/bot/chatgpt.js +27 -0
- package/dist/esm/src/proxy/bot/dispatch.d.ts +7 -0
- package/dist/esm/src/proxy/bot/dispatch.js +42 -0
- package/dist/esm/src/proxy/mqtt.js +11 -1
- package/dist/esm/src/proxy/openAi.d.ts +3 -15
- package/dist/esm/src/proxy/openAi.js +29 -116
- package/dist/esm/src/proxy/openAiHook.d.ts +2 -13
- package/dist/esm/src/proxy/openAiHook.js +27 -90
- package/dist/esm/src/proxy/superagent.js +2 -2
- package/dist/esm/src/proxy/tencent-open.js +95 -61
- package/dist/esm/src/service/event-dispatch-service.d.ts +1 -1
- package/dist/esm/src/service/event-dispatch-service.js +8 -8
- package/dist/esm/src/service/msg-filter-service.d.ts +1 -1
- package/dist/esm/src/service/msg-filter-service.js +11 -4
- package/dist/esm/src/service/msg-filters.d.ts +24 -1
- package/dist/esm/src/service/msg-filters.js +86 -7
- package/dist/esm/src/task/index.js +5 -5
- package/package.json +8 -10
- package/tsconfig.json +62 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
## 更新日志
|
|
2
2
|
|
|
3
|
+
### V1.6.2(2023-04-22)
|
|
4
|
+
1、修复获取好友人数不准的问题
|
|
5
|
+
2、添加日志说明正在使用的协议
|
|
6
|
+
3、优化换行符,不同平台适配
|
|
7
|
+
4、添加禁止词,匹配到禁止词后不会回复消息
|
|
8
|
+
|
|
9
|
+
### V1.6.0(2023-04-22)
|
|
10
|
+
1、添加chatgpt自定义配置,支持自定义模型,自定义token,自定义代理,不同群组使用不同token,定义不同角色
|
|
11
|
+
2、添加角色预设
|
|
12
|
+
|
|
3
13
|
### V1.5.8(2023-04-07)
|
|
4
14
|
1、去除报错上报,防止无限请求
|
|
5
15
|
2、限制二维码推送次数超过50次后需要重启服务才能在平台扫码
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare class Command {
|
|
2
|
+
constructor(name: any, handler: any);
|
|
3
|
+
name: any;
|
|
4
|
+
handler: any;
|
|
5
|
+
}
|
|
6
|
+
declare class CommandManager {
|
|
7
|
+
commands: Map<any, any>;
|
|
8
|
+
register(command: any): void;
|
|
9
|
+
execute(wxid: any, name: any, args: any): Promise<any>;
|
|
10
|
+
getDb(wxid: any): any;
|
|
11
|
+
dbs: Map<any, any> | undefined;
|
|
12
|
+
}
|
|
13
|
+
declare const manager: CommandManager;
|
|
14
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
class Command {
|
|
3
|
+
constructor(name, handler) {
|
|
4
|
+
this.name = name;
|
|
5
|
+
this.handler = handler;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
class CommandManager {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.commands = new Map();
|
|
11
|
+
}
|
|
12
|
+
register(command) {
|
|
13
|
+
this.commands.set(command.name, command);
|
|
14
|
+
}
|
|
15
|
+
async execute(wxid, name, args) {
|
|
16
|
+
const db = this.getDb(wxid);
|
|
17
|
+
const command = this.commands.get(name);
|
|
18
|
+
if (command) {
|
|
19
|
+
return await command.handler(args, db);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log(`Unknown command: ${name}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
getDb(wxid) {
|
|
26
|
+
if (!this.dbs) {
|
|
27
|
+
this.dbs = new Map();
|
|
28
|
+
}
|
|
29
|
+
if (!this.dbs.has(wxid)) {
|
|
30
|
+
const db = new Nedb({ filename: `path/to/db/${wxid}.db`, autoload: true });
|
|
31
|
+
this.dbs.set(wxid, db);
|
|
32
|
+
}
|
|
33
|
+
return this.dbs.get(wxid);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const manager = new CommandManager();
|
|
37
|
+
manager.register(new Command('/rssadd', async (args, db) => {
|
|
38
|
+
const url = args[0];
|
|
39
|
+
const id = generateUniqueId();
|
|
40
|
+
await db.insert({ id, url });
|
|
41
|
+
return '订阅源已添加';
|
|
42
|
+
}));
|
|
43
|
+
manager.register(new Command('/rsstime', async (args, db) => {
|
|
44
|
+
const interval = args[0];
|
|
45
|
+
await db.update({}, { $set: { interval } }, { multi: true });
|
|
46
|
+
return '更新间隔已设置';
|
|
47
|
+
}));
|
|
48
|
+
manager.register(new Command('/rssls', async (args, db) => {
|
|
49
|
+
const sources = await db.find({});
|
|
50
|
+
const urls = sources.map(source => source.url).join('\n');
|
|
51
|
+
return urls;
|
|
52
|
+
}));
|
|
53
|
+
manager.register(new Command('/rssdel', async (args, db) => {
|
|
54
|
+
const id = args[0];
|
|
55
|
+
await db.remove({ id });
|
|
56
|
+
return '订阅源已删除';
|
|
57
|
+
}));
|
|
58
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -41,11 +41,11 @@ export function getNewsContent(sortId: any, endWord?: any, num?: number): Promis
|
|
|
41
41
|
/**
|
|
42
42
|
* 更新用户信息
|
|
43
43
|
*/
|
|
44
|
-
export function updateContactInfo(that: any): Promise<void>;
|
|
44
|
+
export function updateContactInfo(that: any, noCache?: boolean): Promise<void>;
|
|
45
45
|
/**
|
|
46
46
|
* 更新群列表
|
|
47
47
|
*/
|
|
48
|
-
export function updateRoomInfo(that: any): Promise<void>;
|
|
48
|
+
export function updateRoomInfo(that: any, noCache?: boolean): Promise<void>;
|
|
49
49
|
/**
|
|
50
50
|
* 统一邀请加群
|
|
51
51
|
* @param that
|
|
@@ -7,15 +7,17 @@ const userDb_js_1 = require("../db/userDb.js");
|
|
|
7
7
|
const index_js_1 = require("../lib/index.js");
|
|
8
8
|
const file_box_1 = require("file-box");
|
|
9
9
|
const configDb_js_1 = require("../db/configDb.js");
|
|
10
|
+
const puppet_type_js_1 = require("../const/puppet-type.js");
|
|
10
11
|
/**
|
|
11
12
|
* 获取每日新闻内容
|
|
12
13
|
* @param {*} sortId 新闻资讯分类Id
|
|
13
14
|
* @param {*} endWord 结尾备注
|
|
14
15
|
*/
|
|
15
16
|
async function getNewsContent(sortId, endWord = '', num = 10) {
|
|
17
|
+
const eol = await (0, puppet_type_js_1.getPuppetEol)();
|
|
16
18
|
let today = (0, index_js_1.formatDate)(new Date()); //获取今天的日期
|
|
17
19
|
let news = await (0, api_js_1.getNews)(sortId, num);
|
|
18
|
-
let content = `${today}
|
|
20
|
+
let content = `${today}${eol}${news}${eol}${endWord ? '————————' : ''}${endWord}`;
|
|
19
21
|
return content;
|
|
20
22
|
}
|
|
21
23
|
exports.getNewsContent = getNewsContent;
|
|
@@ -26,21 +28,23 @@ exports.getNewsContent = getNewsContent;
|
|
|
26
28
|
* @param {*} endWord 结尾备注
|
|
27
29
|
*/
|
|
28
30
|
async function getEveryDayContent(date, city, endWord) {
|
|
31
|
+
const eol = await (0, puppet_type_js_1.getPuppetEol)();
|
|
29
32
|
let one = await (0, aibotk_js_1.getOne)(); //获取每日一句
|
|
30
33
|
let weather = await (0, api_js_1.getTXweather)(city); //获取天气信息
|
|
31
34
|
let today = (0, index_js_1.formatDate)(new Date()); //获取今天的日期
|
|
32
35
|
let memorialDay = (0, index_js_1.getDay)(date); //获取纪念日天数
|
|
33
36
|
let sweetWord = await (0, api_js_1.getSweetWord)(); // 土味情话
|
|
34
|
-
let str = `${today}
|
|
37
|
+
let str = `${today}${eol}我们在一起的第${memorialDay}天${eol}${eol}元气满满的一天开始啦,要开心噢^_^${eol}${eol}今日天气${eol}${weather.weatherTips}${eol}${weather.todayWeather}${eol}每日一句:${eol}${one}${eol}${eol}情话对你说:${eol}${sweetWord}${eol}${eol}————————${endWord}`;
|
|
35
38
|
return str;
|
|
36
39
|
}
|
|
37
40
|
exports.getEveryDayContent = getEveryDayContent;
|
|
38
41
|
async function getRoomEveryDayContent(date, city, endWord) {
|
|
42
|
+
const eol = await (0, puppet_type_js_1.getPuppetEol)();
|
|
39
43
|
let one = await (0, aibotk_js_1.getOne)(); //获取每日一句
|
|
40
44
|
let weather = await (0, api_js_1.getTXweather)(city); //获取天气信息
|
|
41
45
|
let today = (0, index_js_1.formatDate)(new Date()); //获取今天的日期
|
|
42
46
|
let memorialDay = (0, index_js_1.getDay)(date); //获取纪念日天数
|
|
43
|
-
let str = `${today}
|
|
47
|
+
let str = `${today}${eol}家人们相聚在一起的第${memorialDay}天${eol}${eol}元气满满的一天开始啦,家人们要努力保持活跃啊^_^${eol}${eol}今日天气${eol}${weather.weatherTips}${eol}${weather.todayWeather}${eol}每日一句:${eol}${one}${eol}${eol}————————${endWord}`;
|
|
44
48
|
return str;
|
|
45
49
|
}
|
|
46
50
|
exports.getRoomEveryDayContent = getRoomEveryDayContent;
|
|
@@ -52,18 +56,23 @@ exports.getRoomEveryDayContent = getRoomEveryDayContent;
|
|
|
52
56
|
* @param endWord
|
|
53
57
|
* @return {string}
|
|
54
58
|
*/
|
|
55
|
-
function getCountDownContent(date, prefix, suffix, endWord) {
|
|
59
|
+
async function getCountDownContent(date, prefix, suffix, endWord) {
|
|
60
|
+
const eol = await (0, puppet_type_js_1.getPuppetEol)();
|
|
56
61
|
let countDownDay = (0, index_js_1.getDay)(date); //获取倒计时天数
|
|
57
62
|
let today = (0, index_js_1.formatDate)(new Date()); //获取今天的日期
|
|
58
|
-
let str = `${today}
|
|
63
|
+
let str = `${today}距离${prefix}还有${eol}${eol}${countDownDay}天${eol}${eol}${suffix}${endWord ? `${eol}${eol}————————${endWord}` : ''}`;
|
|
59
64
|
return str;
|
|
60
65
|
}
|
|
61
66
|
exports.getCountDownContent = getCountDownContent;
|
|
62
67
|
/**
|
|
63
68
|
* 更新用户信息
|
|
64
69
|
*/
|
|
65
|
-
async function updateContactInfo(that) {
|
|
70
|
+
async function updateContactInfo(that, noCache = false) {
|
|
66
71
|
try {
|
|
72
|
+
if (noCache && that.puppet.syncContact) {
|
|
73
|
+
await that.puppet.syncContact();
|
|
74
|
+
await (0, index_js_1.delay)(3000);
|
|
75
|
+
}
|
|
67
76
|
const contactSelf = await (0, userDb_js_1.getUser)();
|
|
68
77
|
const contactList = await that.Contact.findAll() || [];
|
|
69
78
|
let res = [];
|
|
@@ -111,8 +120,12 @@ async function updateFriendInfo(list, num) {
|
|
|
111
120
|
/**
|
|
112
121
|
* 更新群列表
|
|
113
122
|
*/
|
|
114
|
-
async function updateRoomInfo(that) {
|
|
123
|
+
async function updateRoomInfo(that, noCache = false) {
|
|
115
124
|
try {
|
|
125
|
+
if (noCache && that.puppet.syncContact) {
|
|
126
|
+
await that.puppet.syncContact();
|
|
127
|
+
await (0, index_js_1.delay)(3000);
|
|
128
|
+
}
|
|
116
129
|
const contactSelf = await (0, userDb_js_1.getUser)();
|
|
117
130
|
const roomList = await that.Room.findAll() || [];
|
|
118
131
|
let res = [];
|
|
@@ -325,11 +338,11 @@ exports.addRoom = addRoom;
|
|
|
325
338
|
async function updateContactAndRoom(that) {
|
|
326
339
|
const contactSelf = await (0, userDb_js_1.getUser)();
|
|
327
340
|
await (0, aibotk_js_1.asyncData)(contactSelf.robotId, 1);
|
|
328
|
-
await (0, index_js_1.delay)(
|
|
341
|
+
await (0, index_js_1.delay)(2000);
|
|
329
342
|
await (0, aibotk_js_1.asyncData)(contactSelf.robotId, 2);
|
|
330
|
-
await (0, index_js_1.delay)(
|
|
331
|
-
await updateRoomInfo(that);
|
|
332
|
-
await (0, index_js_1.delay)(
|
|
343
|
+
await (0, index_js_1.delay)(2000);
|
|
344
|
+
await updateRoomInfo(that, true);
|
|
345
|
+
await (0, index_js_1.delay)(2000);
|
|
333
346
|
await updateContactInfo(that);
|
|
334
347
|
}
|
|
335
348
|
exports.updateContactAndRoom = updateContactAndRoom;
|
|
@@ -341,8 +354,8 @@ exports.updateContactAndRoom = updateContactAndRoom;
|
|
|
341
354
|
async function updateContactOnly(that) {
|
|
342
355
|
const contactSelf = await (0, userDb_js_1.getUser)();
|
|
343
356
|
await (0, aibotk_js_1.asyncData)(contactSelf.robotId, 1);
|
|
344
|
-
await (0, index_js_1.delay)(
|
|
345
|
-
await updateContactInfo(that);
|
|
357
|
+
await (0, index_js_1.delay)(2000);
|
|
358
|
+
await updateContactInfo(that, true);
|
|
346
359
|
}
|
|
347
360
|
exports.updateContactOnly = updateContactOnly;
|
|
348
361
|
/**
|
|
@@ -353,8 +366,8 @@ exports.updateContactOnly = updateContactOnly;
|
|
|
353
366
|
async function updateRoomOnly(that) {
|
|
354
367
|
const contactSelf = await (0, userDb_js_1.getUser)();
|
|
355
368
|
await (0, aibotk_js_1.asyncData)(contactSelf.robotId, 2);
|
|
356
|
-
await (0, index_js_1.delay)(
|
|
357
|
-
await updateRoomInfo(that);
|
|
369
|
+
await (0, index_js_1.delay)(2000);
|
|
370
|
+
await updateRoomInfo(that, true);
|
|
358
371
|
}
|
|
359
372
|
exports.updateRoomOnly = updateRoomOnly;
|
|
360
373
|
exports.default = {
|
|
@@ -8,7 +8,7 @@ export function getContactTextReply(that: any, contact: any, msg: any): Promise<
|
|
|
8
8
|
* @param {*} name 发消息者昵称
|
|
9
9
|
* @param {*} id 发消息者id
|
|
10
10
|
*/
|
|
11
|
-
export function getRoomTextReply({ that, content, name, id, avatar, room, isMention }: any): Promise<number>;
|
|
11
|
+
export function getRoomTextReply({ that, content, name, id, avatar, room, isMention, roomName, roomId }: any): Promise<number>;
|
|
12
12
|
declare namespace _default {
|
|
13
13
|
export { getContactTextReply };
|
|
14
14
|
export { getRoomTextReply };
|
|
@@ -19,8 +19,8 @@ exports.getContactTextReply = getContactTextReply;
|
|
|
19
19
|
* @param {*} name 发消息者昵称
|
|
20
20
|
* @param {*} id 发消息者id
|
|
21
21
|
*/
|
|
22
|
-
async function getRoomTextReply({ that, content, name, id, avatar, room, isMention }) {
|
|
23
|
-
let result = await msg_filter_service_js_1.default.filterRoomMsg({ that, msg: content, name, id, avatar, room, isMention });
|
|
22
|
+
async function getRoomTextReply({ that, content, name, id, avatar, room, isMention, roomName, roomId }) {
|
|
23
|
+
let result = await msg_filter_service_js_1.default.filterRoomMsg({ that, msg: content, name, id, avatar, room, isMention, roomName, roomId });
|
|
24
24
|
return result;
|
|
25
25
|
}
|
|
26
26
|
exports.getRoomTextReply = getRoomTextReply;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function getPuppetEol(): Promise<"\r" | "\n">;
|
|
2
|
+
/**
|
|
3
|
+
* 判断是否是web 协议
|
|
4
|
+
* @return {Promise<boolean>}
|
|
5
|
+
*/
|
|
6
|
+
export function isNotWebPuppet(): Promise<boolean>;
|
|
7
|
+
export namespace PUPPET_MAP {
|
|
8
|
+
const PuppetWechat4u: string;
|
|
9
|
+
const PuppetWechat: string;
|
|
10
|
+
const PuppetPadlocal: string;
|
|
11
|
+
const PuppetEngine: string;
|
|
12
|
+
const PuppetOA: string;
|
|
13
|
+
const PuppetXp: string;
|
|
14
|
+
const PuppetGitter: string;
|
|
15
|
+
const PuppetWhatsapp: string;
|
|
16
|
+
const PuppetWalnut: string;
|
|
17
|
+
const PuppetDiscord: string;
|
|
18
|
+
const PuppetOICQ: string;
|
|
19
|
+
const PuppetLark: string;
|
|
20
|
+
}
|
|
21
|
+
export const WRAP_REPLACE_PUPPET: string[];
|
|
22
|
+
export const SEND_APP_MSG_PUPPET: string[];
|
|
23
|
+
//# sourceMappingURL=puppet-type.d.ts.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNotWebPuppet = exports.getPuppetEol = exports.SEND_APP_MSG_PUPPET = exports.WRAP_REPLACE_PUPPET = exports.PUPPET_MAP = void 0;
|
|
4
|
+
const puppetDb_js_1 = require("../db/puppetDb.js");
|
|
5
|
+
exports.PUPPET_MAP = {
|
|
6
|
+
// https://github.com/wechaty/puppet-wechat4u
|
|
7
|
+
'PuppetWechat4u': '基于wechat4u的网页版api协议',
|
|
8
|
+
// https://github.com/wechaty/puppet-wechat
|
|
9
|
+
'PuppetWechat': '网页版hook协议',
|
|
10
|
+
// https://github.com/wechaty/puppet-padlocal
|
|
11
|
+
'PuppetPadlocal': 'PadLocal协议',
|
|
12
|
+
// https://github.com/wechaty/puppet-engine
|
|
13
|
+
'PuppetEngine': '基于大恩hook的engine协议',
|
|
14
|
+
// https://github.com/wechaty/puppet-official-account
|
|
15
|
+
'PuppetOA': '公众号协议',
|
|
16
|
+
// https://github.com/wechaty/puppet-xp
|
|
17
|
+
'PuppetXp': 'windows xp协议',
|
|
18
|
+
// https://github.com/wechaty/puppet-gitter
|
|
19
|
+
'PuppetGitter': 'gitter协议',
|
|
20
|
+
// https://github.com/wechaty/puppet-whatsapp
|
|
21
|
+
'PuppetWhatsapp': 'whatsapp协议',
|
|
22
|
+
// https://github.com/leochen-g/puppet-walnut-gateway
|
|
23
|
+
'PuppetWalnut': '硬核桃5G消息协议',
|
|
24
|
+
// https://github.com/wechaty/puppet-discord
|
|
25
|
+
'PuppetDiscord': 'Discord协议',
|
|
26
|
+
// https://github.com/wechaty/puppet-oicq
|
|
27
|
+
'PuppetOICQ': '基于OICQ的qq协议',
|
|
28
|
+
// https://github.com/wechaty/puppet-lark
|
|
29
|
+
'PuppetLark': '飞书协议',
|
|
30
|
+
};
|
|
31
|
+
// 需要处理换行的puppet 主要是 windows 平台下需要把\n 换成\r\n
|
|
32
|
+
exports.WRAP_REPLACE_PUPPET = [
|
|
33
|
+
'PuppetEngine', 'PuppetXp'
|
|
34
|
+
];
|
|
35
|
+
exports.SEND_APP_MSG_PUPPET = [
|
|
36
|
+
'PuppetEngine',
|
|
37
|
+
'PuppetXp',
|
|
38
|
+
'PuppetPadlocal',
|
|
39
|
+
'PuppetWalnut',
|
|
40
|
+
'PuppetOICQ',
|
|
41
|
+
'PuppetLark',
|
|
42
|
+
'PuppetOA',
|
|
43
|
+
'PuppetWhatsapp',
|
|
44
|
+
'PuppetDiscord'
|
|
45
|
+
];
|
|
46
|
+
async function getPuppetEol() {
|
|
47
|
+
const puppetInfo = await (0, puppetDb_js_1.getPuppetInfo)();
|
|
48
|
+
if (puppetInfo.puppetType === 'PuppetXp' || puppetInfo.puppetType === 'PuppetEngine') {
|
|
49
|
+
return '\r';
|
|
50
|
+
}
|
|
51
|
+
return '\n';
|
|
52
|
+
}
|
|
53
|
+
exports.getPuppetEol = getPuppetEol;
|
|
54
|
+
/**
|
|
55
|
+
* 判断是否是web 协议
|
|
56
|
+
* @return {Promise<boolean>}
|
|
57
|
+
*/
|
|
58
|
+
async function isNotWebPuppet() {
|
|
59
|
+
const puppetInfo = await (0, puppetDb_js_1.getPuppetInfo)();
|
|
60
|
+
return puppetInfo.puppetType === 'PuppetWechat4u' && puppetInfo.puppetType === 'PuppetWechat';
|
|
61
|
+
}
|
|
62
|
+
exports.isNotWebPuppet = isNotWebPuppet;
|
|
63
|
+
//# sourceMappingURL=puppet-type.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 记录群聊天记录 记录格式
|
|
3
|
+
* { contactName: '', contactId: '', roomName: '', roomId: '', input: '输入的问题', output: '输出内容', time: '时间' }
|
|
4
|
+
* @param info
|
|
5
|
+
* @returns {Promise<unknown>}
|
|
6
|
+
*/
|
|
7
|
+
export function addAichatRecord(info: any): Promise<unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* 获取指定群的聊天记录
|
|
10
|
+
* @param room
|
|
11
|
+
* @returns {Promise<*>}
|
|
12
|
+
*/
|
|
13
|
+
export function getAichatRecord(query: any): Promise<any>;
|
|
14
|
+
/**
|
|
15
|
+
* 清楚指定群的聊天记录
|
|
16
|
+
* @param roomName
|
|
17
|
+
* @returns {Promise<void>}
|
|
18
|
+
*/
|
|
19
|
+
export function removeRecord(query: any): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* 获取指定群聊的所有聊天内容
|
|
22
|
+
* @param rooName
|
|
23
|
+
* @param day 取的天数
|
|
24
|
+
* @returns {Promise<*>}
|
|
25
|
+
*/
|
|
26
|
+
export function getAichatQuestion(query: any, day: any): Promise<any>;
|
|
27
|
+
//# sourceMappingURL=aichatDb.d.ts.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getAichatQuestion = exports.removeRecord = exports.getAichatRecord = exports.addAichatRecord = void 0;
|
|
7
|
+
const nedb_js_1 = __importDefault(require("./nedb.js"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const baseDir = path_1.default.join(os_1.default.homedir(), path_1.default.sep, ".wechaty", "wechaty-panel-cache", path_1.default.sep);
|
|
11
|
+
const dbpath = baseDir + "aichat.db";
|
|
12
|
+
const rdb = (0, nedb_js_1.default)(dbpath);
|
|
13
|
+
console.log('聊天记录路径:如果开启了记录会存到此处,未开启不会记录,所有记录都是存在本地', dbpath);
|
|
14
|
+
/**
|
|
15
|
+
* 记录群聊天记录 记录格式
|
|
16
|
+
* { contactName: '', contactId: '', roomName: '', roomId: '', input: '输入的问题', output: '输出内容', time: '时间' }
|
|
17
|
+
* @param info
|
|
18
|
+
* @returns {Promise<unknown>}
|
|
19
|
+
*/
|
|
20
|
+
async function addAichatRecord(info) {
|
|
21
|
+
try {
|
|
22
|
+
let doc = await rdb.insert(info);
|
|
23
|
+
return doc;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.log("插入数据错误", error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.addAichatRecord = addAichatRecord;
|
|
30
|
+
/**
|
|
31
|
+
* 获取指定群的聊天记录
|
|
32
|
+
* @param room
|
|
33
|
+
* @returns {Promise<*>}
|
|
34
|
+
*/
|
|
35
|
+
async function getAichatRecord(query) {
|
|
36
|
+
try {
|
|
37
|
+
let search = await rdb.find(query);
|
|
38
|
+
return search;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.log("查询数据错误", error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.getAichatRecord = getAichatRecord;
|
|
45
|
+
/**
|
|
46
|
+
* 清楚指定群的聊天记录
|
|
47
|
+
* @param roomName
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
|
+
*/
|
|
50
|
+
async function removeRecord(query) {
|
|
51
|
+
try {
|
|
52
|
+
let search = await rdb.remove(query, { multi: true });
|
|
53
|
+
return search;
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
console.log("error", e);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.removeRecord = removeRecord;
|
|
60
|
+
/**
|
|
61
|
+
* 获取指定群聊的所有聊天内容
|
|
62
|
+
* @param rooName
|
|
63
|
+
* @param day 取的天数
|
|
64
|
+
* @returns {Promise<*>}
|
|
65
|
+
*/
|
|
66
|
+
async function getAichatQuestion(query, day) {
|
|
67
|
+
try {
|
|
68
|
+
let list = await getAichatRecord(query);
|
|
69
|
+
list = list.filter(item => {
|
|
70
|
+
return item.time >= new Date().getTime() - day * 24 * 60 * 60 * 1000;
|
|
71
|
+
});
|
|
72
|
+
let question = "";
|
|
73
|
+
list.forEach((item) => {
|
|
74
|
+
question = question + "|" + item.input;
|
|
75
|
+
});
|
|
76
|
+
return question;
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
console.log("error", e);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.getAichatQuestion = getAichatQuestion;
|
|
83
|
+
//# sourceMappingURL=aichatDb.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 存储gpt配置
|
|
3
|
+
* { contactName: '', contactId: '', roomName: '', roomId: '', input: '输入的问题', output: '输出内容', time: '时间' }
|
|
4
|
+
* @param info
|
|
5
|
+
* @returns {Promise<unknown>}
|
|
6
|
+
*/
|
|
7
|
+
export function addGptConfig(info: any): Promise<unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* 获取指定群的聊天记录
|
|
10
|
+
* @param room
|
|
11
|
+
* @returns {Promise<*>}
|
|
12
|
+
*/
|
|
13
|
+
export function getAllGptConfig(): Promise<any>;
|
|
14
|
+
export function getGptConfigById(id: any): Promise<any>;
|
|
15
|
+
export function updateAllGptConfig(infos: any): Promise<void>;
|
|
16
|
+
export function updateOneGptConfig(id: any, info: any): Promise<any>;
|
|
17
|
+
//# sourceMappingURL=gptConfig.d.ts.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateOneGptConfig = exports.updateAllGptConfig = exports.getGptConfigById = exports.getAllGptConfig = exports.addGptConfig = void 0;
|
|
7
|
+
const nedb_js_1 = __importDefault(require("./nedb.js"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const baseDir = path_1.default.join(os_1.default.homedir(), path_1.default.sep, ".wechaty", "wechaty-panel-cache", path_1.default.sep);
|
|
11
|
+
const dbpath = baseDir + "gptconfig.db";
|
|
12
|
+
const rdb = (0, nedb_js_1.default)(dbpath);
|
|
13
|
+
/**
|
|
14
|
+
* 存储gpt配置
|
|
15
|
+
* { contactName: '', contactId: '', roomName: '', roomId: '', input: '输入的问题', output: '输出内容', time: '时间' }
|
|
16
|
+
* @param info
|
|
17
|
+
* @returns {Promise<unknown>}
|
|
18
|
+
*/
|
|
19
|
+
async function addGptConfig(info) {
|
|
20
|
+
try {
|
|
21
|
+
let doc = await rdb.insert(info);
|
|
22
|
+
return doc;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.log("插入数据错误", error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.addGptConfig = addGptConfig;
|
|
29
|
+
/**
|
|
30
|
+
* 获取指定群的聊天记录
|
|
31
|
+
* @param room
|
|
32
|
+
* @returns {Promise<*>}
|
|
33
|
+
*/
|
|
34
|
+
async function getAllGptConfig() {
|
|
35
|
+
try {
|
|
36
|
+
let search = await rdb.find({});
|
|
37
|
+
return search;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.log("查询数据错误", error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.getAllGptConfig = getAllGptConfig;
|
|
44
|
+
async function getGptConfigById(id) {
|
|
45
|
+
try {
|
|
46
|
+
let search = await rdb.find({ id });
|
|
47
|
+
return search[0];
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.log("查询数据错误", error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.getGptConfigById = getGptConfigById;
|
|
54
|
+
async function updateAllGptConfig(infos) {
|
|
55
|
+
try {
|
|
56
|
+
for (const item of infos) {
|
|
57
|
+
await rdb.update({ _id: item._id }, item, { upsert: true });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.log('更新失败', error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.updateAllGptConfig = updateAllGptConfig;
|
|
65
|
+
async function updateOneGptConfig(id, info) {
|
|
66
|
+
try {
|
|
67
|
+
let search = await rdb.update({ id }, { ...info });
|
|
68
|
+
return search;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
console.log("查询数据错误", error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.updateOneGptConfig = updateOneGptConfig;
|
|
75
|
+
//# sourceMappingURL=gptConfig.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param info {{puppetType}}
|
|
4
|
+
* @return {Promise<unknown>}
|
|
5
|
+
*/
|
|
6
|
+
export function addPuppetInfo(info: {
|
|
7
|
+
puppetType;
|
|
8
|
+
}): Promise<unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* 更新配置文件
|
|
11
|
+
* @param {*} config
|
|
12
|
+
*/
|
|
13
|
+
export function updatePuppetConfig(config: any): Promise<any>;
|
|
14
|
+
/**
|
|
15
|
+
* 获取所有配置
|
|
16
|
+
*/
|
|
17
|
+
export function allPuppetConfig(): Promise<any>;
|
|
18
|
+
export function getPuppetInfo(): Promise<any>;
|
|
19
|
+
//# sourceMappingURL=puppetDb.d.ts.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getPuppetInfo = exports.allPuppetConfig = exports.updatePuppetConfig = exports.addPuppetInfo = void 0;
|
|
7
|
+
const nedb_js_1 = __importDefault(require("./nedb.js"));
|
|
8
|
+
const pdb = (0, nedb_js_1.default)();
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param info {{puppetType}}
|
|
12
|
+
* @return {Promise<unknown>}
|
|
13
|
+
*/
|
|
14
|
+
async function addPuppetInfo(info) {
|
|
15
|
+
try {
|
|
16
|
+
let doc = await pdb.insert(info);
|
|
17
|
+
return doc;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.log('插入数据错误', error);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.addPuppetInfo = addPuppetInfo;
|
|
24
|
+
/**
|
|
25
|
+
* 更新配置文件
|
|
26
|
+
* @param {*} config
|
|
27
|
+
*/
|
|
28
|
+
async function updatePuppetConfig(config) {
|
|
29
|
+
try {
|
|
30
|
+
let res = await allPuppetConfig();
|
|
31
|
+
if (res) {
|
|
32
|
+
let up = await pdb.update({ id: config.id }, config);
|
|
33
|
+
return up;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
let add = await addPuppetInfo(config);
|
|
37
|
+
return add;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.log('puppet更新失败', error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.updatePuppetConfig = updatePuppetConfig;
|
|
45
|
+
/**
|
|
46
|
+
* 获取所有配置
|
|
47
|
+
*/
|
|
48
|
+
async function allPuppetConfig() {
|
|
49
|
+
try {
|
|
50
|
+
let search = await pdb.find();
|
|
51
|
+
return search[0];
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.log('查询数据错误', error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.allPuppetConfig = allPuppetConfig;
|
|
58
|
+
async function getPuppetInfo() {
|
|
59
|
+
try {
|
|
60
|
+
let search = await pdb.find({});
|
|
61
|
+
return search[0];
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.log('查询数据错误', error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.getPuppetInfo = getPuppetInfo;
|
|
68
|
+
//# sourceMappingURL=puppetDb.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
async function onError(error) {
|
|
4
|
-
console.log('
|
|
4
|
+
console.log('捕捉到🐛,如果还能正常运行,可以忽略', error);
|
|
5
5
|
}
|
|
6
6
|
exports.default = onError;
|
|
7
7
|
//# sourceMappingURL=on-error.js.map
|
|
@@ -4,13 +4,21 @@ const aibotk_js_1 = require("../proxy/aibotk.js");
|
|
|
4
4
|
const userDb_js_1 = require("../db/userDb.js");
|
|
5
5
|
const mqtt_js_1 = require("../proxy/mqtt.js");
|
|
6
6
|
const configDb_js_1 = require("../db/configDb.js");
|
|
7
|
+
const puppetDb_js_1 = require("../db/puppetDb.js");
|
|
8
|
+
const puppet_type_js_1 = require("../const/puppet-type.js");
|
|
7
9
|
/**
|
|
8
10
|
* 登录成功监听事件
|
|
9
11
|
* @param {*} user 登录用户
|
|
10
12
|
*/
|
|
11
13
|
async function onLogin(user) {
|
|
12
14
|
try {
|
|
13
|
-
console.log(
|
|
15
|
+
console.log(`
|
|
16
|
+
==========================================================
|
|
17
|
+
贴心助理${user}登录了
|
|
18
|
+
你正在使用的是:${puppet_type_js_1.PUPPET_MAP[this.puppet.constructor.name]}!
|
|
19
|
+
==========================================================
|
|
20
|
+
`);
|
|
21
|
+
await (0, puppetDb_js_1.updatePuppetConfig)({ puppetType: this.puppet.constructor.name });
|
|
14
22
|
await (0, aibotk_js_1.updatePanelVersion)();
|
|
15
23
|
await (0, aibotk_js_1.setQrCode)('', 4);
|
|
16
24
|
await (0, aibotk_js_1.getConfig)(); // 获取配置文件
|