autojoin call if needed

This commit is contained in:
Gabriel Fontes
2023-06-11 13:16:22 -03:00
parent a378993285
commit d5596e6ecd

View File

@@ -349,10 +349,18 @@ fn get_channel(ctx: &Context, msg: &Message) -> Result<ChannelId> {
async fn get_call(ctx: &Context, msg: &Message) -> Result<Arc<Mutex<songbird::Call>>> { async fn get_call(ctx: &Context, msg: &Message) -> Result<Arc<Mutex<songbird::Call>>> {
let manager = get_manager(ctx).await?; let manager = get_manager(ctx).await?;
let guild = get_guild(ctx, msg)?; let guild = get_guild(ctx, msg)?;
let call = manager let call = manager.get(guild);
.get(guild)
.ok_or_else(|| anyhow!("Not in a voice channel"))?; if let Some(c) = call {
Ok(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<Song> { async fn get_song(track: &TrackHandle) -> Result<Song> {