use serenity::all::{ChannelId, Context, Guild, GuildId}; /// Get a guild by id pub fn get_guild(ctx: &Context, guild_id: &GuildId) -> Option { let guild = ctx.cache.guild(guild_id)?; Some(guild.clone()) } /// Get the current channel id of the bot pub fn get_channel_id(ctx: &Context, guild_id: &GuildId) -> Option { let guild = get_guild(ctx, guild_id)?; let channel_id = guild .voice_states .get(&ctx.cache.current_user().id) .and_then(|voice_state| voice_state.channel_id); Some(channel_id.unwrap()) } pub fn is_self_connected_to_vc(ctx: &Context, guild_id: &GuildId) -> bool { let channel_id = get_channel_id(ctx, guild_id); // TODO: There has to be a way to improve this. This is bad code and it should be optimized. if channel_id.is_none() { return false; } true } // This whole file is jank. I have to rewrite this once I know Rust better pub fn get_self_vc_id(ctx: &Context, guild_id: &GuildId) -> Option { let channel_id = get_channel_id(ctx, guild_id)?; Some(channel_id) }