use parking_lot;

use serenity;
use serenity::client::CACHE;
use serenity::model::id::{ChannelId, GuildId};
use serenity::voice::Handler;

pub fn guild_id(channel_id: ChannelId) -> Option<GuildId> {
    match CACHE.read().guild_channel(channel_id) {
        Some(channel) => Some(channel.read().guild_id),
        None => {
            print_error!(channel_id.say("Error finding channel info"));
            None
        }
    }
}

pub fn handler<'a>(
    guild_id: GuildId,
    manager: &'a mut parking_lot::MutexGuard<
        '_,
        serenity::client::bridge::voice::ClientVoiceManager,
    >,
) -> Option<&'a mut Handler> {
    manager.get_mut(guild_id)
}