lavaclient
Version:
A simple, easy-to-use, and flexible lavalink client for node.js
86 lines • 6.44 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PlayerVoice = void 0;
const tools_js_1 = require("./tools.js");
const tiny_typed_emitter_1 = require("tiny-typed-emitter");
class PlayerVoice extends tiny_typed_emitter_1.TypedEmitter {
player;
channelId = null;
connected = false;
latency = -1;
server = null;
voiceUpdate = {};
constructor(player) {
super();
this.player = player;
}
connect(channel, options = {}) {
this.voiceUpdate = {};
const channelId = channel && (0, tools_js_1.getId)(channel);
this.player.node.emit("debug", {
system: "player",
subsystem: "voice",
message: `updating voice status in guild=${this.player.id}, channel=${channelId}`,
player: this.player,
});
this.player.node.options.discord.sendGatewayCommand(this.player.id, {
op: 4,
d: {
guild_id: this.player.id,
channel_id: channelId,
self_deaf: options.deafened ?? false,
self_mute: options.muted ?? false,
},
});
return this;
}
disconnect() {
return this.connect(null);
}
async handleVoiceUpdate(update) {
if ("token" in update) {
this.voiceUpdate.event = update;
}
else {
if (update.user_id !== this.player.node.userId) {
return false;
}
const channel = update.channel_id;
if (!channel && this.channelId) {
this.emit("channelLeave", this.channelId);
this.channelId = null;
this.voiceUpdate = {};
}
else if (channel && !this.channelId) {
this.channelId = update.channel_id;
this.emit("channelJoin", this.channelId);
}
else if (channel !== this.channelId) {
this.emit("channelMove", this.channelId, update.channel_id);
this.channelId = update.channel_id;
}
if (this.voiceUpdate.sessionId === update.session_id) {
return false;
}
this.voiceUpdate.sessionId = update.session_id;
}
if (this.voiceUpdate.event && this.voiceUpdate.sessionId) {
this.player.node.emit("debug", {
system: "player",
subsystem: "voice",
message: "submitting voice update to node.",
player: this.player,
});
const data = await this.player.api.update({
voice: {
...this.voiceUpdate.event,
sessionId: this.voiceUpdate.sessionId,
},
});
this.player.patch(data);
}
return true;
}
}
exports.PlayerVoice = PlayerVoice;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyVm9pY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxheWVyVm9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLHlDQUErRDtBQUUvRCwyREFBa0Q7QUFFbEQsTUFBYSxXQUFZLFNBQVEsaUNBQStCO0lBdUJ2QztJQW5CckIsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFLaEMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUtsQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFLYixNQUFNLEdBQStCLElBQUksQ0FBQztJQUVsQyxXQUFXLEdBQStFLEVBQUUsQ0FBQztJQUVyRyxZQUFxQixNQUFjO1FBQy9CLEtBQUssRUFBRSxDQUFDO1FBRFMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUVuQyxDQUFDO0lBUUQsT0FBTyxDQUFDLE9BQTJDLEVBQUUsVUFBMEIsRUFBRTtRQUM3RSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixNQUFNLFNBQVMsR0FBRyxPQUFPLElBQUksSUFBQSxnQkFBSyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDM0IsTUFBTSxFQUFFLFFBQVE7WUFDaEIsU0FBUyxFQUFFLE9BQU87WUFDbEIsT0FBTyxFQUFFLGtDQUFrQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsYUFBYSxTQUFTLEVBQUU7WUFDakYsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQztRQUdILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDaEUsRUFBRSxFQUFFLENBQUM7WUFDTCxDQUFDLEVBQUU7Z0JBQ0MsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMs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