import { Client } from '../models/client.ts' import { Guild } from "../structures/guild.ts" import { VoiceChannel } from "../structures/guildVoiceChannel.ts" import { User } from "../structures/user.ts" import { VoiceState } from "../structures/voiceState.ts" import { VoiceStatePayload } from "../types/voice.ts" import { BaseManager } from './base.ts' export class GuildVoiceStatesManager extends BaseManager { guild: Guild async get (key: string): Promise { const raw = await this._get(key) if (raw === undefined) return const guild = raw.guild_id === undefined ? undefined : await this.client.guilds.get(raw.guild_id) return new VoiceState(this.client, raw, { user: (await this.client.users.get(raw.user_id) as unknown) as User, channel: raw.channel_id == null ? null : (await this.client.channels.get(raw.channel_id) as unknown) as VoiceChannel, guild, member: guild === undefined ? undefined : await guild.members.get(raw.user_id) }) } constructor (client: Client, guild: Guild) { super(client, `vs:${guild.id}`, VoiceState) this.guild = guild } }