31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
|
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<VoiceStatePayload, VoiceState> {
|
||
|
guild: Guild
|
||
|
|
||
|
async get (key: string): Promise<VoiceState | undefined> {
|
||
|
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<VoiceChannel>(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
|
||
|
}
|
||
|
}
|