ziplayer 0.2.6 → 0.2.7-dev.1
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/AI-Guide.md +607 -0
- package/README.md +513 -196
- package/dist/extensions/BaseExtension.d.ts +1 -0
- package/dist/extensions/BaseExtension.d.ts.map +1 -1
- package/dist/extensions/BaseExtension.js.map +1 -1
- package/dist/extensions/index.d.ts +38 -3
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +259 -41
- package/dist/extensions/index.js.map +1 -1
- package/dist/persistence/PersistenceManager.d.ts +61 -0
- package/dist/persistence/PersistenceManager.d.ts.map +1 -0
- package/dist/persistence/PersistenceManager.js +551 -0
- package/dist/persistence/PersistenceManager.js.map +1 -0
- package/dist/plugins/BasePlugin.js +1 -1
- package/dist/plugins/BasePlugin.js.map +1 -1
- package/dist/plugins/index.d.ts +19 -4
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +273 -146
- package/dist/plugins/index.js.map +1 -1
- package/dist/structures/FilterManager.js +3 -3
- package/dist/structures/FilterManager.js.map +1 -1
- package/dist/structures/Player.d.ts +64 -14
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +344 -91
- package/dist/structures/Player.js.map +1 -1
- package/dist/structures/PlayerManager.d.ts +125 -91
- package/dist/structures/PlayerManager.d.ts.map +1 -1
- package/dist/structures/PlayerManager.js +406 -111
- package/dist/structures/PlayerManager.js.map +1 -1
- package/dist/structures/Queue.d.ts +136 -31
- package/dist/structures/Queue.d.ts.map +1 -1
- package/dist/structures/Queue.js +265 -46
- package/dist/structures/Queue.js.map +1 -1
- package/dist/types/index.d.ts +39 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +55 -0
- package/dist/types/persistence.d.ts.map +1 -0
- package/dist/types/persistence.js +3 -0
- package/dist/types/persistence.js.map +1 -0
- package/package.json +47 -46
- package/src/extensions/BaseExtension.ts +36 -35
- package/src/extensions/index.ts +473 -190
- package/src/index.ts +16 -16
- package/src/persistence/PersistenceManager.ts +572 -0
- package/src/plugins/BasePlugin.ts +27 -27
- package/src/plugins/index.ts +403 -236
- package/src/structures/FilterManager.ts +303 -303
- package/src/structures/Player.ts +1962 -1689
- package/src/structures/PlayerManager.ts +788 -416
- package/src/structures/Queue.ts +599 -354
- package/src/types/index.ts +406 -373
- package/src/types/persistence.ts +65 -0
- package/src/types/plugin.ts +1 -1
- package/src/utils/timeout.ts +10 -10
- package/tsconfig.json +22 -23
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { LoopMode, PlayerOptions } from ".";
|
|
2
|
+
export interface SerializedTrack {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
url: string;
|
|
6
|
+
source: string;
|
|
7
|
+
duration: number;
|
|
8
|
+
thumbnail?: string;
|
|
9
|
+
author?: string;
|
|
10
|
+
requestedBy?: string;
|
|
11
|
+
isLive?: boolean;
|
|
12
|
+
artwork?: string;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
export interface SerializedQueue {
|
|
16
|
+
tracks: SerializedTrack[];
|
|
17
|
+
current: SerializedTrack | null;
|
|
18
|
+
history: SerializedTrack[];
|
|
19
|
+
loopMode: LoopMode;
|
|
20
|
+
autoPlay: boolean;
|
|
21
|
+
position?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface SerializedPlayer {
|
|
24
|
+
guildId: string;
|
|
25
|
+
queue: SerializedQueue;
|
|
26
|
+
volume: number;
|
|
27
|
+
isPlaying: boolean;
|
|
28
|
+
isPaused: boolean;
|
|
29
|
+
options: PlayerOptions;
|
|
30
|
+
filters?: string[];
|
|
31
|
+
lastUpdate: number;
|
|
32
|
+
version: string;
|
|
33
|
+
}
|
|
34
|
+
export interface PersistenceOptions {
|
|
35
|
+
enabled: boolean;
|
|
36
|
+
provider?: "file" | "redis" | "database";
|
|
37
|
+
saveInterval?: number;
|
|
38
|
+
autoLoad?: boolean;
|
|
39
|
+
maxBackups?: number;
|
|
40
|
+
compress?: boolean;
|
|
41
|
+
filePath?: string;
|
|
42
|
+
redisUrl?: string;
|
|
43
|
+
redisPrefix?: string;
|
|
44
|
+
save?: (data: Map<string, SerializedPlayer>) => Promise<void>;
|
|
45
|
+
load?: () => Promise<Map<string, SerializedPlayer>>;
|
|
46
|
+
delete?: (guildId: string) => Promise<void>;
|
|
47
|
+
list?: () => Promise<string[]>;
|
|
48
|
+
}
|
|
49
|
+
export interface PersistenceProvider {
|
|
50
|
+
save(key: string, data: any, compress?: boolean): Promise<void>;
|
|
51
|
+
load(key: string): Promise<any>;
|
|
52
|
+
delete(key: string): Promise<void>;
|
|
53
|
+
list(): Promise<string[]>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/types/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAExD,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/types/persistence.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,46 +1,47 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ziplayer",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "A modular Discord voice player with plugin system",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"ZiPlayer",
|
|
7
|
-
"discord",
|
|
8
|
-
"music",
|
|
9
|
-
"player",
|
|
10
|
-
"voice",
|
|
11
|
-
"@ziplayer/plugin"
|
|
12
|
-
],
|
|
13
|
-
"homepage": "https://player.ziji.
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "https://github.com/ZiProject/ZiPlayer/issues"
|
|
16
|
-
},
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/ZiProject/ZiPlayer.git"
|
|
20
|
-
},
|
|
21
|
-
"main": "dist/index.js",
|
|
22
|
-
"types": "dist/index.d.ts",
|
|
23
|
-
"scripts": {
|
|
24
|
-
"build": "tsc",
|
|
25
|
-
"dev": "tsc --watch",
|
|
26
|
-
"prepare": "npm run build"
|
|
27
|
-
},
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"@discordjs/voice": "^0.19.0",
|
|
30
|
-
"@snazzah/davey": "^0.1.6",
|
|
31
|
-
"discord-api-types": "^0.38.37",
|
|
32
|
-
"ffmpeg-static": "^5.2.0",
|
|
33
|
-
"libsodium-wrappers": "^0.7.15",
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "ziplayer",
|
|
3
|
+
"version": "0.2.7-dev.1",
|
|
4
|
+
"description": "A modular Discord voice player with plugin system",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ZiPlayer",
|
|
7
|
+
"discord",
|
|
8
|
+
"music",
|
|
9
|
+
"player",
|
|
10
|
+
"voice",
|
|
11
|
+
"@ziplayer/plugin"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://player.ziji.best",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/ZiProject/ZiPlayer/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/ZiProject/ZiPlayer.git"
|
|
20
|
+
},
|
|
21
|
+
"main": "dist/index.js",
|
|
22
|
+
"types": "dist/index.d.ts",
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"dev": "tsc --watch",
|
|
26
|
+
"prepare": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@discordjs/voice": "^0.19.0",
|
|
30
|
+
"@snazzah/davey": "^0.1.6",
|
|
31
|
+
"discord-api-types": "^0.38.37",
|
|
32
|
+
"ffmpeg-static": "^5.2.0",
|
|
33
|
+
"libsodium-wrappers": "^0.7.15",
|
|
34
|
+
"lru-cache": "^11.3.6",
|
|
35
|
+
"opusscript": "^0.1.1",
|
|
36
|
+
"prism-media": "^1.3.5"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/node": "^20.0.0",
|
|
40
|
+
"typescript": "^5.0.0"
|
|
41
|
+
},
|
|
42
|
+
"overrides": {
|
|
43
|
+
"prism-media": {
|
|
44
|
+
"opusscript": "^0.1.1"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1,35 +1,36 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
SourceExtension,
|
|
3
|
-
ExtensionContext,
|
|
4
|
-
SearchResult,
|
|
5
|
-
ExtensionPlayRequest,
|
|
6
|
-
ExtensionPlayResponse,
|
|
7
|
-
ExtensionAfterPlayPayload,
|
|
8
|
-
ExtensionStreamRequest,
|
|
9
|
-
StreamInfo,
|
|
10
|
-
ExtensionSearchRequest,
|
|
11
|
-
} from "../types";
|
|
12
|
-
import type { Player } from "../structures/Player";
|
|
13
|
-
|
|
14
|
-
export abstract class BaseExtension implements SourceExtension {
|
|
15
|
-
abstract name: string;
|
|
16
|
-
abstract version: string;
|
|
17
|
-
|
|
18
|
-
abstract
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
import type {
|
|
2
|
+
SourceExtension,
|
|
3
|
+
ExtensionContext,
|
|
4
|
+
SearchResult,
|
|
5
|
+
ExtensionPlayRequest,
|
|
6
|
+
ExtensionPlayResponse,
|
|
7
|
+
ExtensionAfterPlayPayload,
|
|
8
|
+
ExtensionStreamRequest,
|
|
9
|
+
StreamInfo,
|
|
10
|
+
ExtensionSearchRequest,
|
|
11
|
+
} from "../types";
|
|
12
|
+
import type { Player } from "../structures/Player";
|
|
13
|
+
|
|
14
|
+
export abstract class BaseExtension implements SourceExtension {
|
|
15
|
+
abstract name: string;
|
|
16
|
+
abstract version: string;
|
|
17
|
+
priority?: number; // Higher = run first
|
|
18
|
+
abstract player: Player | null;
|
|
19
|
+
abstract active(alas: any): boolean | Promise<boolean>;
|
|
20
|
+
|
|
21
|
+
onRegister?(context: ExtensionContext): void | Promise<void>;
|
|
22
|
+
onDestroy?(context: ExtensionContext): void | Promise<void>;
|
|
23
|
+
beforePlay?(
|
|
24
|
+
context: ExtensionContext,
|
|
25
|
+
payload: ExtensionPlayRequest,
|
|
26
|
+
): Promise<ExtensionPlayResponse | void> | ExtensionPlayResponse | void;
|
|
27
|
+
afterPlay?(context: ExtensionContext, payload: ExtensionAfterPlayPayload): Promise<void> | void;
|
|
28
|
+
provideSearch?(
|
|
29
|
+
context: ExtensionContext,
|
|
30
|
+
payload: ExtensionSearchRequest,
|
|
31
|
+
): Promise<SearchResult | null | undefined> | SearchResult | null | undefined;
|
|
32
|
+
provideStream?(
|
|
33
|
+
context: ExtensionContext,
|
|
34
|
+
payload: ExtensionStreamRequest,
|
|
35
|
+
): Promise<StreamInfo | null | undefined> | StreamInfo | null | undefined;
|
|
36
|
+
}
|