auralis-sdk 0.2.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/README.md +90 -0
- package/dist/index.cjs +674 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +271 -0
- package/dist/index.d.ts +271 -0
- package/dist/index.js +625 -0
- package/dist/index.js.map +1 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# auralis-sdk
|
|
2
|
+
|
|
3
|
+
Official **Node.js / TypeScript SDK** for the [Auralis](https://github.com/auralis/auralis)
|
|
4
|
+
music platform. One runtime dependency (`ws`), a tiny command surface, and the whole
|
|
5
|
+
queue/skip/loop/shuffle brain handled for you.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install auralis-sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Node 18+ (uses the global `fetch`).
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { Client, LoopMode } from "auralis-sdk";
|
|
17
|
+
|
|
18
|
+
const client = new Client("http://localhost:8080", "YOUR-API-TOKEN");
|
|
19
|
+
await client.start();
|
|
20
|
+
|
|
21
|
+
client.on("trackStart", (player) => console.log("now playing:", player.current?.title));
|
|
22
|
+
client.on("queueEnd", (player) => player.disconnect());
|
|
23
|
+
|
|
24
|
+
const player = client.getPlayer(123456789n as unknown as number); // guild id
|
|
25
|
+
|
|
26
|
+
// --- wire your Discord library's voice events to the player (see below) ---
|
|
27
|
+
|
|
28
|
+
await player.play("ytsearch:never gonna give you up");
|
|
29
|
+
await player.add("https://youtu.be/dQw4w9WgXcQ");
|
|
30
|
+
player.setLoop(LoopMode.Queue);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Player commands
|
|
34
|
+
|
|
35
|
+
| Command | Does |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `await player.play(query)` | resolve + enqueue, start if idle |
|
|
38
|
+
| `await player.add(query)` | enqueue only |
|
|
39
|
+
| `await player.skip()` | advance to next track |
|
|
40
|
+
| `await player.stop()` | stop + clear queue (stays connected) |
|
|
41
|
+
| `await player.pause()` / `resume()` | pause / resume |
|
|
42
|
+
| `await player.seek(ms)` | seek |
|
|
43
|
+
| `await player.setVolume(0..1000)` | volume (100 = unity) |
|
|
44
|
+
| `player.setLoop(LoopMode.Off/Track/Queue)` | loop mode |
|
|
45
|
+
| `player.shuffle()` | shuffle the queue |
|
|
46
|
+
| `player.nowPlaying()` | current `Track` |
|
|
47
|
+
| `await player.setFilters("bass=g=8")` | raw ffmpeg `-af` filtergraph |
|
|
48
|
+
| `await player.disconnect()` | tear down the player |
|
|
49
|
+
|
|
50
|
+
`query` is a search string (`"ytsearch:…"`, a URL, a playlist URL) or a `Track` you
|
|
51
|
+
already loaded via `client.search(...)` / `client.loadTracks(...)`.
|
|
52
|
+
|
|
53
|
+
## Events
|
|
54
|
+
|
|
55
|
+
`client.on("<name>", handler)`:
|
|
56
|
+
|
|
57
|
+
| Event | Args |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `ready` | — |
|
|
60
|
+
| `trackStart` | `(player, data)` |
|
|
61
|
+
| `trackEnd` | `(player, data)` — `data.reason` |
|
|
62
|
+
| `trackException` | `(player, data)` |
|
|
63
|
+
| `trackStuck` | `(player, data)` |
|
|
64
|
+
| `playerUpdate` | `(player, data)` — `player.state` |
|
|
65
|
+
| `voiceClosed` | `(player, data)` |
|
|
66
|
+
| `queueEnd` | `(player)` |
|
|
67
|
+
| `disconnect` | — (auto-reconnects) |
|
|
68
|
+
|
|
69
|
+
## Wiring Discord voice
|
|
70
|
+
|
|
71
|
+
The SDK never touches the Discord gateway — your bot owns that. Join a channel with
|
|
72
|
+
your library (e.g. discord.js), then forward the two raw voice payloads:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
// discord.js
|
|
76
|
+
client_discord.ws.on("VOICE_SERVER_UPDATE", (d) =>
|
|
77
|
+
client.getPlayer(Number(d.guild_id)).handleVoiceServerUpdate(d),
|
|
78
|
+
);
|
|
79
|
+
client_discord.ws.on("VOICE_STATE_UPDATE", (d) => {
|
|
80
|
+
if (d.user_id === botUserId)
|
|
81
|
+
client.getPlayer(Number(d.guild_id)).handleVoiceStateUpdate(d);
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Once both arrive, the player connects and starts anything already queued.
|
|
86
|
+
|
|
87
|
+
## Notes
|
|
88
|
+
|
|
89
|
+
- The queue lives in this process (lost on bot restart).
|
|
90
|
+
- Node internals (node ids, endpoints, regions) are never exposed by this SDK.
|