@dsh-plugin/dsh-synapse 0.1.0-dev.41044228975 → 0.1.0
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/LICENSE +661 -661
- package/README.md +0 -14
- package/package.json +1 -1
- package/vendor/gugle-chat-bot/LICENSE +661 -661
- package/vendor/gugle-chat-bot/package.json +57 -57
- package/vendor/gugle-chat-bot/src/allow-rule.yml +9345 -9345
- package/vendor/gugle-chat-bot/src/api.json +4284 -4284
- package/vendor/gugle-chat-bot/src/command/index.ts +141 -141
- package/vendor/gugle-chat-bot/src/config/features.ts +547 -547
- package/vendor/gugle-chat-bot/src/config/index.ts +184 -184
- package/vendor/gugle-chat-bot/src/config/manager.ts +356 -356
- package/vendor/gugle-chat-bot/src/constants/index.ts +13 -13
- package/vendor/gugle-chat-bot/src/custom.ts +548 -548
- package/vendor/gugle-chat-bot/src/event/index.ts +118 -118
- package/vendor/gugle-chat-bot/src/features/admin/index.ts +414 -414
- package/vendor/gugle-chat-bot/src/features/bili/image/impl/video.ts +39 -39
- package/vendor/gugle-chat-bot/src/features/bili/image/index.ts +37 -37
- package/vendor/gugle-chat-bot/src/features/bili/index.ts +65 -65
- package/vendor/gugle-chat-bot/src/features/bili/template/style/video.css +97 -97
- package/vendor/gugle-chat-bot/src/features/bili/template/video.html +56 -56
- package/vendor/gugle-chat-bot/src/features/discord-bridge/index.ts +1128 -1128
- package/vendor/gugle-chat-bot/src/features/discord-bridge/markdown.ts +105 -105
- package/vendor/gugle-chat-bot/src/features/discord-bridge/slash.ts +355 -355
- package/vendor/gugle-chat-bot/src/features/discord-bridge/source.ts +96 -96
- package/vendor/gugle-chat-bot/src/features/discord-bridge/template/message.html +14 -14
- package/vendor/gugle-chat-bot/src/features/discord-bridge/template/style/message.css +144 -144
- package/vendor/gugle-chat-bot/src/features/github/api.ts +93 -93
- package/vendor/gugle-chat-bot/src/features/github/binding.ts +161 -161
- package/vendor/gugle-chat-bot/src/features/github/image/impl/issue.ts +132 -132
- package/vendor/gugle-chat-bot/src/features/github/image/impl/pr.ts +144 -144
- package/vendor/gugle-chat-bot/src/features/github/image/impl/release.ts +160 -160
- package/vendor/gugle-chat-bot/src/features/github/image/index.ts +310 -310
- package/vendor/gugle-chat-bot/src/features/github/index.ts +302 -302
- package/vendor/gugle-chat-bot/src/features/github/template/issue.html +118 -118
- package/vendor/gugle-chat-bot/src/features/github/template/pull_request.html +125 -125
- package/vendor/gugle-chat-bot/src/features/github/template/release.html +53 -53
- package/vendor/gugle-chat-bot/src/features/github/template/style/issue.css +468 -468
- package/vendor/gugle-chat-bot/src/features/github/template/style/pull_request.css +468 -468
- package/vendor/gugle-chat-bot/src/features/github/template/style/release.css +412 -412
- package/vendor/gugle-chat-bot/src/features/hermes/client.ts +184 -184
- package/vendor/gugle-chat-bot/src/features/hermes/config.ts +210 -210
- package/vendor/gugle-chat-bot/src/features/hermes/context.ts +67 -67
- package/vendor/gugle-chat-bot/src/features/hermes/history.ts +86 -86
- package/vendor/gugle-chat-bot/src/features/hermes/index.ts +1533 -1533
- package/vendor/gugle-chat-bot/src/features/hermes/message.ts +319 -319
- package/vendor/gugle-chat-bot/src/features/hermes/reaction.ts +181 -181
- package/vendor/gugle-chat-bot/src/features/hermes/render.ts +118 -118
- package/vendor/gugle-chat-bot/src/features/hermes/reply-units.ts +331 -331
- package/vendor/gugle-chat-bot/src/features/hermes/skills.ts +406 -406
- package/vendor/gugle-chat-bot/src/features/hermes/template/approval.html +30 -30
- package/vendor/gugle-chat-bot/src/features/hermes/template/progress.html +21 -21
- package/vendor/gugle-chat-bot/src/features/hermes/template/style/approval.css +81 -81
- package/vendor/gugle-chat-bot/src/features/hermes/template/style/progress.css +120 -120
- package/vendor/gugle-chat-bot/src/features/hermes/trigger.ts +86 -86
- package/vendor/gugle-chat-bot/src/features/hermes/types.ts +327 -327
- package/vendor/gugle-chat-bot/src/features/management/index.ts +156 -156
- package/vendor/gugle-chat-bot/src/features/minecraft/index.ts +127 -127
- package/vendor/gugle-chat-bot/src/features/modrinth/index.ts +71 -71
- package/vendor/gugle-chat-bot/src/features/parentheses/index.ts +117 -117
- package/vendor/gugle-chat-bot/src/features/peak-valley-timer/index.ts +451 -451
- package/vendor/gugle-chat-bot/src/features/poke/index.ts +24 -24
- package/vendor/gugle-chat-bot/src/features/version-tracker/index.ts +77 -77
- package/vendor/gugle-chat-bot/src/features/welcome/index.ts +57 -57
- package/vendor/gugle-chat-bot/src/github-ip.json +5814 -5814
- package/vendor/gugle-chat-bot/src/image/index.ts +278 -278
- package/vendor/gugle-chat-bot/src/index.ts +695 -695
- package/vendor/gugle-chat-bot/src/logger/index.ts +54 -54
- package/vendor/gugle-chat-bot/src/result.json +359 -359
- package/vendor/gugle-chat-bot/src/type/bili.d.ts +825 -825
- package/vendor/gugle-chat-bot/src/type/event.d.ts +146 -146
- package/vendor/gugle-chat-bot/src/type/github.d.ts +446 -446
- package/vendor/gugle-chat-bot/src/type/index.d.ts +254 -254
- package/vendor/gugle-chat-bot/tsconfig.json +46 -46
- package/scripts/dump-npm-latest.mjs +0 -30
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
import * as fs from 'node:fs';
|
|
2
|
-
import { readOrCreate } from '@/config/manager';
|
|
3
|
-
|
|
4
|
-
export class EventDataManager {
|
|
5
|
-
private static readonly FILE: string = './configs/event-data.json';
|
|
6
|
-
private static readonly LEGACY_FILE: string = './config/event-data.json';
|
|
7
|
-
private static readonly LEGACY_DIRECTORY: string = './config';
|
|
8
|
-
private static listeners: {
|
|
9
|
-
[key: string]: { roomId: string; channelId: string }[];
|
|
10
|
-
} = {};
|
|
11
|
-
|
|
12
|
-
private static storage: {
|
|
13
|
-
[key: string]: {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
};
|
|
16
|
-
} = {};
|
|
17
|
-
|
|
18
|
-
static {
|
|
19
|
-
EventDataManager.load().then();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public static async addListener(event: string, roomId: string, channelId: string): Promise<void> {
|
|
23
|
-
if (!EventDataManager.listeners[event]) EventDataManager.listeners[event] = [];
|
|
24
|
-
EventDataManager.listeners[event].push({ roomId, channelId });
|
|
25
|
-
await EventDataManager.save();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public static async containListener(event: string, roomId: string, channelId: string): Promise<boolean> {
|
|
29
|
-
if (!EventDataManager.listeners[event]) return false;
|
|
30
|
-
return EventDataManager.listeners[event].some(
|
|
31
|
-
listener => listener.roomId === roomId && listener.channelId === channelId
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public static async removeListener(event: string, roomId: string, channelId: string): Promise<void> {
|
|
36
|
-
if (!EventDataManager.listeners[event]) return;
|
|
37
|
-
EventDataManager.listeners[event] = EventDataManager.listeners[event].filter(
|
|
38
|
-
listener => listener.roomId !== roomId && listener.channelId !== channelId
|
|
39
|
-
);
|
|
40
|
-
await EventDataManager.save();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public static async getListeners(event: string): Promise<{ roomId: string; channelId: string }[]> {
|
|
44
|
-
return EventDataManager.listeners[event] || [];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public static async setStorage(event: string, key: string, value: any): Promise<void> {
|
|
48
|
-
if (!EventDataManager.storage[event]) EventDataManager.storage[event] = {};
|
|
49
|
-
EventDataManager.storage[event][key] = value;
|
|
50
|
-
await EventDataManager.save();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public static async getStorage(event: string, key: string): Promise<any> {
|
|
54
|
-
if (!EventDataManager.storage[event]) return undefined;
|
|
55
|
-
return EventDataManager.storage[event][key];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public static async clearStorage(event: string): Promise<void> {
|
|
59
|
-
delete EventDataManager.storage[event];
|
|
60
|
-
await EventDataManager.save();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* 从磁盘重新加载事件数据(/reload 用)。
|
|
65
|
-
* 现有 storage 会被磁盘内容覆盖,因此同时清空已删除的键。
|
|
66
|
-
*/
|
|
67
|
-
public static async reload(): Promise<void> {
|
|
68
|
-
EventDataManager.listeners = {};
|
|
69
|
-
EventDataManager.storage = {};
|
|
70
|
-
await EventDataManager.load();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
private static migrateLegacyFile(): void {
|
|
74
|
-
if (!fs.existsSync(EventDataManager.LEGACY_DIRECTORY)) return;
|
|
75
|
-
|
|
76
|
-
fs.mkdirSync('./configs', { recursive: true });
|
|
77
|
-
if (fs.existsSync(EventDataManager.LEGACY_FILE) && !fs.existsSync(EventDataManager.FILE)) {
|
|
78
|
-
fs.renameSync(EventDataManager.LEGACY_FILE, EventDataManager.FILE);
|
|
79
|
-
}
|
|
80
|
-
fs.rmSync(EventDataManager.LEGACY_DIRECTORY, { recursive: true, force: true });
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public static async checkAndCreateFile(): Promise<void> {
|
|
84
|
-
EventDataManager.migrateLegacyFile();
|
|
85
|
-
readOrCreate<{ listeners: Record<string, never>; storage: Record<string, never> }>({
|
|
86
|
-
path: EventDataManager.FILE,
|
|
87
|
-
factory: () => ({ listeners: {}, storage: {} })
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
public static async load(): Promise<void> {
|
|
92
|
-
await EventDataManager.checkAndCreateFile();
|
|
93
|
-
const data = readOrCreate<{
|
|
94
|
-
listeners?: Record<string, { roomId: string; channelId: string }[]>;
|
|
95
|
-
storage?: Record<string, Record<string, unknown>>;
|
|
96
|
-
}>({
|
|
97
|
-
path: EventDataManager.FILE,
|
|
98
|
-
factory: () => ({ listeners: {}, storage: {} })
|
|
99
|
-
}).data;
|
|
100
|
-
EventDataManager.listeners = {
|
|
101
|
-
...EventDataManager.listeners,
|
|
102
|
-
...(data.listeners || {})
|
|
103
|
-
};
|
|
104
|
-
EventDataManager.storage = {
|
|
105
|
-
...EventDataManager.storage,
|
|
106
|
-
...(data.storage || {})
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
public static async save(): Promise<void> {
|
|
111
|
-
await EventDataManager.checkAndCreateFile();
|
|
112
|
-
const { writeConfigFile } = await import('@/config/manager');
|
|
113
|
-
writeConfigFile(EventDataManager.FILE, {
|
|
114
|
-
listeners: EventDataManager.listeners,
|
|
115
|
-
storage: EventDataManager.storage
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import { readOrCreate } from '@/config/manager';
|
|
3
|
+
|
|
4
|
+
export class EventDataManager {
|
|
5
|
+
private static readonly FILE: string = './configs/event-data.json';
|
|
6
|
+
private static readonly LEGACY_FILE: string = './config/event-data.json';
|
|
7
|
+
private static readonly LEGACY_DIRECTORY: string = './config';
|
|
8
|
+
private static listeners: {
|
|
9
|
+
[key: string]: { roomId: string; channelId: string }[];
|
|
10
|
+
} = {};
|
|
11
|
+
|
|
12
|
+
private static storage: {
|
|
13
|
+
[key: string]: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
};
|
|
16
|
+
} = {};
|
|
17
|
+
|
|
18
|
+
static {
|
|
19
|
+
EventDataManager.load().then();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public static async addListener(event: string, roomId: string, channelId: string): Promise<void> {
|
|
23
|
+
if (!EventDataManager.listeners[event]) EventDataManager.listeners[event] = [];
|
|
24
|
+
EventDataManager.listeners[event].push({ roomId, channelId });
|
|
25
|
+
await EventDataManager.save();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public static async containListener(event: string, roomId: string, channelId: string): Promise<boolean> {
|
|
29
|
+
if (!EventDataManager.listeners[event]) return false;
|
|
30
|
+
return EventDataManager.listeners[event].some(
|
|
31
|
+
listener => listener.roomId === roomId && listener.channelId === channelId
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public static async removeListener(event: string, roomId: string, channelId: string): Promise<void> {
|
|
36
|
+
if (!EventDataManager.listeners[event]) return;
|
|
37
|
+
EventDataManager.listeners[event] = EventDataManager.listeners[event].filter(
|
|
38
|
+
listener => listener.roomId !== roomId && listener.channelId !== channelId
|
|
39
|
+
);
|
|
40
|
+
await EventDataManager.save();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public static async getListeners(event: string): Promise<{ roomId: string; channelId: string }[]> {
|
|
44
|
+
return EventDataManager.listeners[event] || [];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static async setStorage(event: string, key: string, value: any): Promise<void> {
|
|
48
|
+
if (!EventDataManager.storage[event]) EventDataManager.storage[event] = {};
|
|
49
|
+
EventDataManager.storage[event][key] = value;
|
|
50
|
+
await EventDataManager.save();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public static async getStorage(event: string, key: string): Promise<any> {
|
|
54
|
+
if (!EventDataManager.storage[event]) return undefined;
|
|
55
|
+
return EventDataManager.storage[event][key];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public static async clearStorage(event: string): Promise<void> {
|
|
59
|
+
delete EventDataManager.storage[event];
|
|
60
|
+
await EventDataManager.save();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* 从磁盘重新加载事件数据(/reload 用)。
|
|
65
|
+
* 现有 storage 会被磁盘内容覆盖,因此同时清空已删除的键。
|
|
66
|
+
*/
|
|
67
|
+
public static async reload(): Promise<void> {
|
|
68
|
+
EventDataManager.listeners = {};
|
|
69
|
+
EventDataManager.storage = {};
|
|
70
|
+
await EventDataManager.load();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private static migrateLegacyFile(): void {
|
|
74
|
+
if (!fs.existsSync(EventDataManager.LEGACY_DIRECTORY)) return;
|
|
75
|
+
|
|
76
|
+
fs.mkdirSync('./configs', { recursive: true });
|
|
77
|
+
if (fs.existsSync(EventDataManager.LEGACY_FILE) && !fs.existsSync(EventDataManager.FILE)) {
|
|
78
|
+
fs.renameSync(EventDataManager.LEGACY_FILE, EventDataManager.FILE);
|
|
79
|
+
}
|
|
80
|
+
fs.rmSync(EventDataManager.LEGACY_DIRECTORY, { recursive: true, force: true });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public static async checkAndCreateFile(): Promise<void> {
|
|
84
|
+
EventDataManager.migrateLegacyFile();
|
|
85
|
+
readOrCreate<{ listeners: Record<string, never>; storage: Record<string, never> }>({
|
|
86
|
+
path: EventDataManager.FILE,
|
|
87
|
+
factory: () => ({ listeners: {}, storage: {} })
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public static async load(): Promise<void> {
|
|
92
|
+
await EventDataManager.checkAndCreateFile();
|
|
93
|
+
const data = readOrCreate<{
|
|
94
|
+
listeners?: Record<string, { roomId: string; channelId: string }[]>;
|
|
95
|
+
storage?: Record<string, Record<string, unknown>>;
|
|
96
|
+
}>({
|
|
97
|
+
path: EventDataManager.FILE,
|
|
98
|
+
factory: () => ({ listeners: {}, storage: {} })
|
|
99
|
+
}).data;
|
|
100
|
+
EventDataManager.listeners = {
|
|
101
|
+
...EventDataManager.listeners,
|
|
102
|
+
...(data.listeners || {})
|
|
103
|
+
};
|
|
104
|
+
EventDataManager.storage = {
|
|
105
|
+
...EventDataManager.storage,
|
|
106
|
+
...(data.storage || {})
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public static async save(): Promise<void> {
|
|
111
|
+
await EventDataManager.checkAndCreateFile();
|
|
112
|
+
const { writeConfigFile } = await import('@/config/manager');
|
|
113
|
+
writeConfigFile(EventDataManager.FILE, {
|
|
114
|
+
listeners: EventDataManager.listeners,
|
|
115
|
+
storage: EventDataManager.storage
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|