"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.VoicePlugin = void 0;var _Plugin = require("../../abstracts/Plugin.js"); var _GuildDeleteListener = require("./GuildDeleteListener.js"); var _VoiceServerUpdateListener = require("./VoiceServerUpdateListener.js"); var _VoiceStateUpdateListener = require("./VoiceStateUpdateListener.js"); class VoicePlugin extends _Plugin.Plugin { id = "voice"; client; adapters = new Map(); shardingPlugin; gatewayPlugin; async registerClient(client) { this.client = client; const sharding = this.client.getPlugin("sharding"); if (sharding) { this.shardingPlugin = sharding; } const gateway = this.client.getPlugin("gateway"); if (gateway) { this.gatewayPlugin = gateway; } if (!this.gatewayPlugin && !this.shardingPlugin) { throw new Error("Voice cannot be used without a gateway connection."); } this.client.registerListener(new _GuildDeleteListener.GuildDelete()); this.client.registerListener(new _VoiceStateUpdateListener.VoiceStateUpdate()); this.client.registerListener(new _VoiceServerUpdateListener.VoiceServerUpdate()); } getGateway(guild_id) { if (this.shardingPlugin) { return this.shardingPlugin.getShardForGuild(guild_id); } return this.gatewayPlugin; } getGatewayAdapterCreator(guild_id) { const gateway = this.getGateway(guild_id); if (!gateway) { throw new Error("Voice cannot be used without a gateway connection."); } return (methods) => { this.adapters.set(guild_id, methods); return { sendPayload(payload) { try { gateway.send(payload, true); return true; } catch { return false; } }, destroy: () => { this.adapters.delete(guild_id); } }; }; } }exports.VoicePlugin = VoicePlugin; /* v9-023b186346a36996 */