diff --git a/src/discord.rs b/src/discord.rs index a7e0461..59af766 100644 --- a/src/discord.rs +++ b/src/discord.rs @@ -349,10 +349,18 @@ fn get_channel(ctx: &Context, msg: &Message) -> Result { async fn get_call(ctx: &Context, msg: &Message) -> Result>> { let manager = get_manager(ctx).await?; let guild = get_guild(ctx, msg)?; - let call = manager - .get(guild) - .ok_or_else(|| anyhow!("Not in a voice channel"))?; - Ok(call) + let call = manager.get(guild); + + if let Some(c) = call { + Ok(c) + } else { + let channel = get_channel(ctx, msg)?; + log::warn!("Not in a voice channel, trying to join"); + let _handler = manager.join(guild, channel).await; + manager + .get(guild) + .ok_or_else(|| anyhow!("Not in a voice channel, try running 'join'")) + } } async fn get_song(track: &TrackHandle) -> Result {