lavaclient
Version:
A simple, easy-to-use, and flexible lavalink client for node.js
59 lines • 4.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClusterNode = void 0;
const node_js_1 = require("../node.js");
const penalty_js_1 = require("./penalty.js");
class ClusterNode extends node_js_1.Node {
cluster;
identifier;
penalties = new penalty_js_1.Penalties(this);
constructor(cluster, options) {
super({ discord: cluster.options.discord, ...options });
this.cluster = cluster;
this.identifier = options.identifier ?? `${options.info.host}:${options.info.port}`;
}
emit(event, ...args) {
const _event = `node${event.replace(/(\b\w)/, (i) => i.toUpperCase())}`;
if (this.cluster.listenerCount(_event)) {
return this.cluster.emit(_event, this, ...args);
}
if (event === "debug") {
const event = args[0];
return this.cluster.emit("debug", {
...event,
message: `[${this.identifier}] ${event.message}`,
});
}
return 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;
}
if (message.op === "event") {
player.handleEvent(message);
switch (message.type) {
case "TrackStartEvent":
this.penalties.loadsAttempted++;
break;
case "TrackEndEvent":
if (message.reason === "loadFailed")
this.penalties.loadsFailed++;
break;
case "TrackExceptionEvent":
this.penalties.tracksFailed++;
break;
case "TrackStuckEvent":
this.penalties.tracksStuck++;
break;
}
}
else {
player.patchWithState(message.state);
}
}
}
exports.ClusterNode = ClusterNode;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUJBLHdDQUEyRDtBQUMzRCw2Q0FBeUM7QUFFekMsTUFBYSxXQUFZLFNBQVEsY0FBSTtJQVlwQjtJQVJKLFVBQVUsQ0FBUztJQUtuQixTQUFTLEdBQUcsSUFBSSxzQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpDLFlBQ2EsT0FBZ0IsRUFDekIsT0FBMkI7UUFFM0IsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUgvQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBS3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVRLElBQUksQ0FBNkIsS0FBUSxFQUFFLEdBQUcsSUFBK0I7UUFDbEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQXlCLENBQUM7UUFDL0YsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUVwQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNuRDtRQUVELElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFxQixDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUM5QixHQUFHLEtBQUs7Z0JBQ1IsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFO2FBQ25ELENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVrQixtQkFBbUIsQ0FBQyxPQUE2RDtRQUNoRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsYUFBYSxPQUFPLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUM7WUFDN0YsT0FBTztTQUNWO1FBRUQsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRTtZQUN4QixNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDbEIsS0FBSyxpQkFBaUI7b0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2hDLE1BQU07Z0JBQ1YsS0FBSyxlQUFlO29CQUNoQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssWUFBWTt3QkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNsRSxNQUFNO2dCQUNWLEtBQUsscUJBQXFCO29CQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUM5QixNQUFNO2dCQUNWLEtBQUssaUJBQWlCO29CQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUM3QixNQUFNO2FBQ2I7U0FDSjthQUFNO1lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDO0NBQ0o7QUFqRUQsa0NBaUVDIn0=