harmony/src/structures/voicestate.ts

50 lines
1.6 KiB
TypeScript

import { Client } from '../models/client.ts'
import { MemberPayload } from '../types/guild.ts'
import { VoiceStatePayload } from '../types/voice.ts'
import { Base } from './base.ts'
export class VoiceState extends Base {
guildID?: string
channelID?: string
userID: string
member?: MemberPayload
sessionID: string
deaf: boolean
mute: boolean
selfDeaf: boolean
selfMute: boolean
selfStream?: boolean
selfVideo: boolean
suppress: boolean
constructor (client: Client, data: VoiceStatePayload) {
super(client, data)
this.channelID = data.channel_id
this.sessionID = data.session_id
this.userID = data.user_id
this.deaf = data.deaf
this.mute = data.mute
this.selfDeaf = data.self_deaf
this.selfMute = data.self_mute
this.selfStream = data.self_stream
this.selfVideo = data.self_video
this.suppress = data.suppress
// TODO: Cache in Gateway Event Code
// cache.set('voiceState', `${this.guildID}:${this.userID}`, this)
}
protected readFromData (data: VoiceStatePayload): void {
super.readFromData(data)
this.channelID = data.channel_id ?? this.channelID
this.sessionID = data.session_id ?? this.sessionID
this.userID = data.user_id ?? this.userID
this.deaf = data.deaf ?? this.deaf
this.mute = data.mute ?? this.mute
this.selfDeaf = data.self_deaf ?? this.selfDeaf
this.selfMute = data.self_mute ?? this.selfMute
this.selfStream = data.self_stream ?? this.selfStream
this.selfVideo = data.self_video ?? this.selfVideo
this.suppress = data.suppress ?? this.suppress
}
}