var bootTime … type allVoiceChannelTracking … func (d *DiscordServerSession) updateVoiceChannelTrackingFromDiscordState(srvid string) allVoiceChannelTracking { … } func (d *DiscordGuild) VoiceEvents() <-chan common.VoiceEvent { … } func (d *DiscordGuild) VoiceStatus() (stats map[string]common.VoiceChannelTracker) { … } func (d *DiscordGuild) ActiveUsersInVoice() (activeusers []common.UserRecord) { … } func (d *DiscordGuild) ActiveUsersInVoiceChannel(cid string) (activeusers []common.UserRecord) { … } func (d *DiscordGuild) UserEnabledVideo(uid common.UserId) (camera bool, streaming bool) { … } func (d *DiscordGuild) userJoinedVoiceChannel(uid common.UserId, cid string) { … } func (d *DiscordGuild) userLeftVoiceChannel(cid string, track common.VoiceChannelTracker) { … } type voiceState … const voiceStateUnknown … const voiceStateJoin … const voiceStateLeave … const voiceStateMove … const voiceStateMute … const voiceStateUnmute … const voiceStateDeaf … const voiceStateUndeaf … const voiceStateVideoOn … const voiceStateVideoOff … const voiceStateStreamOn … const voiceStateStreamOff … func determineVoiceState(v *discordgo.VoiceStateUpdate) voiceState { … } func (d *DiscordServerSession) trackVoicePresences() { … } func (d *DiscordServerSession) handleVoiceStates(s *discordgo.Session, v *discordgo.VoiceStateUpdate) { … } func logVideoStateChange(srv common.ChatServer, userID string, videobefore, videoafter, streamingbefore, streamingafter bool) { … }