lavaclient
Version:
A simple, easy-to-use, and flexible lavalink client for node.js
63 lines • 6.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Node = void 0;
const tslib_1 = require("tslib");
const API = tslib_1.__importStar(require("lavalink-api-client"));
const WS = tslib_1.__importStar(require("lavalink-ws-client"));
const player_js_1 = require("./player.js");
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
const players_js_1 = require("./players.js");
class Node extends tiny_typed_emitter_1.TypedEmitter {
options;
players;
rest;
ws;
api;
userId;
constructor(options) {
super();
this.options = options;
this.players = new players_js_1.NodePlayerManager(this);
this.rest = new API.LavalinkHttpClient({ ...options.info, ...options.rest });
this.api = new API.LavalinkAPI(this.rest);
this.ws = new WS.LavalinkWSClient(this.api, { ...options.ws, userId: options.discord.userId });
this.userId = options.discord.userId;
this.rest.on("request", (event) => this.emit("request", event));
this.ws.on("ready", (event) => this.emit("ready", event));
this.ws.on("debug", (message) => this.emit("debug", { system: "ws", message }));
this.ws.on("error", (error) => this.emit("error", error));
this.ws.on("connected", (event) => this.emit("connected", event));
this.ws.on("disconnected", (event) => this.emit("disconnected", event));
this.ws.on("message", (message) => {
if (message.op === "event" || message.op === "playerUpdate")
this.handlePlayerMessage(message);
});
}
get uptime() {
return this.ws.uptime;
}
connect(options = {}) {
if (options.userId)
this.userId = options.userId;
this.ws.connect(options);
}
disconnect() {
this.ws.disconnect();
}
createPlayer(guildId) {
return new player_js_1.Player(this, guildId);
}
emit(event, ...args) {
return this.listenerCount(event) > 0 ? super.emit(event, ...args) : false;
}
handlePlayerMessage(message) {
const player = this.players.resolve(message.guildId);
if (!player) {
this.emit("debug", { system: "ws", message: `received '${message.op}' for unknown player` });
return;
}
message.op === "event" ? player.handleEvent(message) : player.patchWithState(message.state);
}
}
exports.Node = Node;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFpQkEsaUVBQTJDO0FBQzNDLCtEQUF5QztBQUd6QywyQ0FBcUM7QUFDckMsMkRBQWtEO0FBQ2xELDZDQUFnRTtBQUVoRSxNQUFhLElBQUssU0FBUSxpQ0FBd0I7SUF1QnpCO0lBbkJaLE9BQU8sQ0FBc0I7SUFLN0IsSUFBSSxDQUF5QjtJQUs3QixFQUFFLENBQXNCO0lBS3hCLEdBQUcsQ0FBa0I7SUFFOUIsTUFBTSxDQUFxQjtJQUUzQixZQUFxQixPQUFvQjtRQUNyQyxLQUFLLEVBQUUsQ0FBQztRQURTLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFHckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDhCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUtyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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