wechaty-web-panel 1.6.112 → 1.6.113

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 (109) hide show
  1. package/dist/bot/chatgpt/index.js +235 -0
  2. package/dist/bot/coze/sdk/index.js +110 -0
  3. package/dist/bot/dify/sdk/index.js +461 -0
  4. package/dist/bot/dify/sdk/office.js +319 -0
  5. package/dist/bot/fastgpt/index.js +98 -0
  6. package/dist/bot/qanything/index.js +136 -0
  7. package/dist/botInstance/coze.js +167 -0
  8. package/dist/botInstance/cozev3.js +157 -0
  9. package/dist/botInstance/dify.js +160 -0
  10. package/dist/botInstance/fastgpt.js +130 -0
  11. package/dist/botInstance/gpt4v.js +95 -0
  12. package/dist/botInstance/officialOpenAi.js +186 -0
  13. package/dist/botInstance/qany.js +144 -0
  14. package/dist/botInstance/sdk/chatGPT4V.js +89 -0
  15. package/dist/botInstance/sdk/coze.js +200 -0
  16. package/dist/botInstance/sdk/difyClient.js +354 -0
  17. package/dist/botInstance/sdk/pTimeout.js +97 -0
  18. package/dist/botInstance/sdk/qanything.js +137 -0
  19. package/dist/botInstance/sdk/quick-lru.js +237 -0
  20. package/dist/common/hook.js +66 -0
  21. package/dist/common/index.js +513 -0
  22. package/dist/common/multiReply.js +158 -0
  23. package/dist/common/reply.js +23 -0
  24. package/dist/const/puppet-type.js +71 -0
  25. package/dist/db/aiDb.js +27 -0
  26. package/dist/db/aichatDb.js +84 -0
  27. package/dist/db/chatHistory.js +137 -0
  28. package/dist/db/configDb.js +97 -0
  29. package/dist/db/global.js +62 -0
  30. package/dist/db/gptConfig.js +85 -0
  31. package/dist/db/nedb.js +88 -0
  32. package/dist/db/puppetDb.js +58 -0
  33. package/dist/db/roomDb.js +83 -0
  34. package/dist/db/rssConfig.js +82 -0
  35. package/dist/db/rssHistory.js +88 -0
  36. package/dist/db/userDb.js +27 -0
  37. package/dist/handlers/on-callback-message.js +183 -0
  38. package/dist/handlers/on-error.js +5 -0
  39. package/dist/handlers/on-friend.js +62 -0
  40. package/dist/handlers/on-heartbeat.js +20 -0
  41. package/dist/handlers/on-login.js +58 -0
  42. package/dist/handlers/on-logout.js +17 -0
  43. package/dist/handlers/on-message.js +644 -0
  44. package/dist/handlers/on-ready.js +36 -0
  45. package/dist/handlers/on-record-message.js +56 -0
  46. package/dist/handlers/on-roomjoin.js +42 -0
  47. package/dist/handlers/on-roomleave.js +12 -0
  48. package/dist/handlers/on-roomtopic.js +16 -0
  49. package/dist/handlers/on-scan.js +64 -0
  50. package/dist/handlers/on-verifycode.js +42 -0
  51. package/dist/index.js +81 -69306
  52. package/dist/lib/contentCensor.js +23 -0
  53. package/dist/lib/index.js +562 -0
  54. package/dist/lib/oss.js +43 -0
  55. package/dist/lib/s3oss.js +33 -0
  56. package/dist/mcp/mcp-server.js +26 -0
  57. package/dist/mcp/src/config/database.js +51 -0
  58. package/dist/mcp/src/index.js +238 -0
  59. package/dist/mcp/src/mcp/schemas.js +178 -0
  60. package/dist/mcp/src/mcp/server.js +421 -0
  61. package/dist/mcp/src/mcp/streamable-server.js +690 -0
  62. package/dist/mcp/src/models/ChatMessage.js +151 -0
  63. package/dist/mcp/src/models/Friend.js +64 -0
  64. package/dist/mcp/src/models/Group.js +55 -0
  65. package/dist/mcp/src/models/GroupMember.js +67 -0
  66. package/dist/mcp/src/models/index.js +27 -0
  67. package/dist/mcp/src/scripts/migrate.js +21 -0
  68. package/dist/mcp/src/services/ChatDataService.js +284 -0
  69. package/dist/mcp/src/services/McpService.js +521 -0
  70. package/dist/mcp/src/services/McpTools.js +504 -0
  71. package/dist/mcp/streamable-examples.js +283 -0
  72. package/dist/mcp/streamable-server.js +79 -0
  73. package/dist/mcp/test-mcp.js +64 -0
  74. package/dist/mcp/test-streamable-server.js +86 -0
  75. package/dist/package-json.js +89 -0
  76. package/dist/proxy/aibotk.js +829 -0
  77. package/dist/proxy/api.js +431 -0
  78. package/dist/proxy/apib.js +587 -0
  79. package/dist/proxy/bot/chatgpt.js +38 -0
  80. package/dist/proxy/bot/coze.js +38 -0
  81. package/dist/proxy/bot/cozev3.js +38 -0
  82. package/dist/proxy/bot/dify.js +38 -0
  83. package/dist/proxy/bot/dispatch.js +81 -0
  84. package/dist/proxy/bot/fastgpt.js +27 -0
  85. package/dist/proxy/bot/qany.js +27 -0
  86. package/dist/proxy/config.js +14 -0
  87. package/dist/proxy/cozeAi.js +60 -0
  88. package/dist/proxy/cozeV3Ai.js +60 -0
  89. package/dist/proxy/difyAi.js +58 -0
  90. package/dist/proxy/fastgpt.js +55 -0
  91. package/dist/proxy/mqtt.js +275 -0
  92. package/dist/proxy/multimodal.js +122 -0
  93. package/dist/proxy/openAi.js +63 -0
  94. package/dist/proxy/outapi.js +62 -0
  95. package/dist/proxy/qAnyAi.js +57 -0
  96. package/dist/proxy/superagent.js +200 -0
  97. package/dist/proxy/tencent-open.js +255 -0
  98. package/dist/service/event-dispatch-service.js +309 -0
  99. package/dist/service/gpt4vService.js +45 -0
  100. package/dist/service/msg-filter-service.js +121 -0
  101. package/dist/service/msg-filters.js +645 -0
  102. package/dist/service/room-async-service.js +455 -0
  103. package/dist/task/index.js +535 -0
  104. package/dist/task/rss.js +174 -0
  105. package/package.json +2 -2
  106. package/src/package-json.js +2 -2
  107. package/tsconfig.json +3 -12
  108. package/dist/index.d.ts +0 -9
  109. package/tsconfig.cjs.json +0 -12
@@ -0,0 +1,56 @@
1
+ import { allConfig } from '../db/configDb.js';
2
+ import { addHistory } from "../db/chatHistory.js";
3
+ import dayjs from "dayjs";
4
+ async function onRecordMessage(msg) {
5
+ try {
6
+ const config = await allConfig();
7
+ const { role } = config && config.userInfo || { role: 'default' };
8
+ const contact = msg.talker(); // 发消息人
9
+ const contactName = contact && contact.name(); // 发消息人昵称
10
+ const room = msg.room(); // 是否为群消息
11
+ const roomName = room ? await room.topic() : '';
12
+ const msgSelf = msg.self(); // 是否自己发给自己的消息
13
+ const type = msg.type();
14
+ let isOfficial = null;
15
+ try {
16
+ isOfficial = contact && contact.type() === this.Contact.Type.Official;
17
+ }
18
+ catch (e) {
19
+ console.log('check isOfficial error, don`t worry, no effect', e);
20
+ isOfficial = false;
21
+ }
22
+ let content = '';
23
+ if (msgSelf || isOfficial || role !== 'vip' || !config.openRecord)
24
+ return;
25
+ switch (type) {
26
+ case this.Message.Type.Text:
27
+ case this.Message.Type.Url:
28
+ if (type === this.Message.Type.Url) {
29
+ const urlLink = await msg.toUrlLink();
30
+ content = `[链接](${urlLink.url()})`;
31
+ }
32
+ else {
33
+ content = msg.text();
34
+ }
35
+ const historyItem = {
36
+ conversionId: room ? room.id : contact.id,
37
+ conversionName: room ? roomName : contactName,
38
+ isRoom: !!room,
39
+ isRobot: false,
40
+ content: content,
41
+ chatName: contactName,
42
+ chatId: contact.id,
43
+ time: dayjs().unix()
44
+ };
45
+ void addHistory(historyItem);
46
+ return;
47
+ default:
48
+ break;
49
+ }
50
+ }
51
+ catch (e) {
52
+ console.log('监听消息失败', e);
53
+ }
54
+ }
55
+ export default onRecordMessage;
56
+ //# sourceMappingURL=on-record-message.js.map
@@ -0,0 +1,42 @@
1
+ import { addRoomWelcomeSay } from '../common/index.js';
2
+ import { allConfig } from '../db/configDb.js';
3
+ /**
4
+ * 判断配置中是否存在此群
5
+ * @param {*} arr 配置的群组
6
+ * @param {*} name 有新人的群名
7
+ * @return {*} 配置中此群的下标,不存在此群返回-1
8
+ */
9
+ function roomHasConfig(arr, name) {
10
+ if (arr.length == 0)
11
+ return -1;
12
+ for (let i in arr) {
13
+ if (arr[i].roomName == name)
14
+ return i;
15
+ }
16
+ return -1;
17
+ }
18
+ /**
19
+ * 群中有新人进入
20
+ */
21
+ async function onRoomjoin(room, inviteeList, inviter, date) {
22
+ try {
23
+ await room.sync();
24
+ const config = await allConfig();
25
+ const nameList = inviteeList.map((c) => c.name()).join(',');
26
+ const roomName = await room.topic();
27
+ const roomIndex = config && roomHasConfig(config.roomJoinKeywords, roomName);
28
+ console.log('进群', roomName, roomIndex, nameList);
29
+ if (roomIndex > -1) {
30
+ const { welcomes } = config.roomJoinKeywords[roomIndex];
31
+ console.log(`群名: ${roomName} ,加入新成员: ${nameList}, 邀请人: ${inviter}`);
32
+ for (const item of welcomes) {
33
+ await addRoomWelcomeSay(room, roomName, nameList, item);
34
+ }
35
+ }
36
+ }
37
+ catch (e) {
38
+ console.log('on room join error: ', e);
39
+ }
40
+ }
41
+ export default onRoomjoin;
42
+ //# sourceMappingURL=on-roomjoin.js.map
@@ -0,0 +1,12 @@
1
+ async function onRoomleave(room, leaverList, remover, date) {
2
+ try {
3
+ await room.sync();
4
+ const nameList = leaverList.map((c) => c.name()).join(',');
5
+ console.log(`群: 【${await room.topic()}】 离开了成员【 ${nameList}】,移除人【 ${remover}】`);
6
+ }
7
+ catch (e) {
8
+ console.log('群成员离开报错', e);
9
+ }
10
+ }
11
+ export default onRoomleave;
12
+ //# sourceMappingURL=on-roomleave.js.map
@@ -0,0 +1,16 @@
1
+ import { updateRoomOnly } from '../common/index.js';
2
+ import { delay } from '../lib/index.js';
3
+ async function onRoomtopic(room, newTopic, oldTopic, changer, date) {
4
+ try {
5
+ await room.sync();
6
+ console.log(`【${oldTopic}】群名更新为:${newTopic}`);
7
+ await delay(3000);
8
+ console.log('正在更新群组');
9
+ await updateRoomOnly(this);
10
+ }
11
+ catch (e) {
12
+ console.log('群名更新报错', e);
13
+ }
14
+ }
15
+ export default onRoomtopic;
16
+ //# sourceMappingURL=on-roomtopic.js.map
@@ -0,0 +1,64 @@
1
+ import Qrterminal from 'qrcode-terminal';
2
+ import { throttle } from '../lib/index.js';
3
+ import { setQrCode, getVerifyCode } from '../proxy/aibotk.js';
4
+ import { getAibotConfig } from "../db/aiDb.js";
5
+ import { updatePuppetConfig } from "../db/puppetDb.js";
6
+ import globalConfig from '../db/global.js';
7
+ // 限制推送二维码的次数,防止掉线后,无限推送二维码到服务器
8
+ let scanTime = 0;
9
+ export function resetScanTime() {
10
+ scanTime = 0;
11
+ }
12
+ function extractLastPathWithCheck(url) {
13
+ const parts = url.split('/');
14
+ if (parts[parts.length - 2] === 'x') {
15
+ return parts[parts.length - 1];
16
+ }
17
+ else {
18
+ return null; // 或者可以返回一个错误消息
19
+ }
20
+ }
21
+ function getQrcodeKey(qrcode) {
22
+ if (!qrcode || !qrcode.startsWith('http'))
23
+ return;
24
+ let url = new URL(qrcode);
25
+ let searchParams = new URLSearchParams(url.search.slice(1));
26
+ if (searchParams.get('key')) {
27
+ console.log('获取到二维码信息中的key');
28
+ globalConfig.setQrKey(searchParams.get('key'));
29
+ }
30
+ else if (extractLastPathWithCheck(qrcode)) {
31
+ console.log('获取到二维码信息中的key');
32
+ globalConfig.setQrKey(extractLastPathWithCheck(qrcode));
33
+ }
34
+ else {
35
+ globalConfig.setQrKey('');
36
+ }
37
+ }
38
+ /**
39
+ * 扫描登录,显示二维码
40
+ */
41
+ async function onScan(qrcode, status) {
42
+ try {
43
+ await updatePuppetConfig({ puppetType: this.puppet.constructor.name });
44
+ const aibotConfig = await getAibotConfig();
45
+ await getVerifyCode();
46
+ getQrcodeKey(qrcode);
47
+ Qrterminal.generate(qrcode);
48
+ console.log('扫描状态', status);
49
+ if (scanTime >= aibotConfig.scanTimes) {
50
+ console.log('长时间推送登录状态,平台二维码不再更新,请重启服务,或直接在终端扫码登录');
51
+ }
52
+ else {
53
+ scanTime++;
54
+ throttle(setQrCode(qrcode, status), 15000);
55
+ }
56
+ const qrImgUrl = ['https://api.qrserver.com/v1/create-qr-code/?data=', encodeURIComponent(qrcode)].join('');
57
+ console.log(qrImgUrl);
58
+ }
59
+ catch (e) {
60
+ console.log('二维码推送报错', e);
61
+ }
62
+ }
63
+ export default onScan;
64
+ //# sourceMappingURL=on-scan.js.map
@@ -0,0 +1,42 @@
1
+ import globalConfig from '../db/global.js';
2
+ import { getVerifyCode, setVerifyInfo } from '../proxy/aibotk.js';
3
+ import { getPuppetInfo } from '../db/puppetDb.js';
4
+ export default async function onVerifyCode(id, message, scene, status) {
5
+ try {
6
+ const puppetInfo = await getPuppetInfo();
7
+ if (puppetInfo.puppetType === 'PuppetMatrix' && message) {
8
+ try {
9
+ const verifyInfo = JSON.parse(message);
10
+ await setVerifyInfo(message);
11
+ }
12
+ catch (error) {
13
+ console.log('验证信息JSON解析失败');
14
+ }
15
+ }
16
+ globalConfig.setVerifyId(id);
17
+ if (status === 1 && scene === 1 && id === globalConfig.getQrKey()) {
18
+ await getVerifyCode();
19
+ if (globalConfig.getVerifyCode()) {
20
+ console.log(`获取到输入的验证码:${globalConfig.getVerifyCode()},正在填入`);
21
+ const verifyCode = globalConfig.getVerifyCode(); // 通过一些途径输入验证码
22
+ try {
23
+ await this.enterVerifyCode(id, verifyCode); // 如果没抛错,则说明输入成功,会推送登录事件
24
+ }
25
+ catch (e) {
26
+ console.log('验证码校验错误:', e.message);
27
+ // 如果抛错,请根据 message 处理,目前发现可以输错3次,超过3次错误需要重新扫码。
28
+ // 错误关键词: 验证码错误输入错误,请重新输入
29
+ // 错误关键词:验证码错误次数超过阈值,请重新扫码'
30
+ // 目前不会推送 EXPIRED 事件,需要根据错误内容判断
31
+ }
32
+ }
33
+ }
34
+ else {
35
+ console.log('请重新扫码登录');
36
+ }
37
+ }
38
+ catch (e) {
39
+ console.log('输入验证码报错', e);
40
+ }
41
+ }
42
+ //# sourceMappingURL=on-verifycode.js.map