pikadick/commands/
leave.rs1use crate::checks::ENABLED_CHECK;
2use anyhow::Context as _;
3use serenity::{
4 client::Context,
5 framework::standard::{
6 macros::command,
7 CommandResult,
8 },
9 model::prelude::*,
10};
11
12#[command]
13#[only_in(guilds)]
14#[bucket("default")]
15#[checks(Enabled)]
16async fn leave(ctx: &Context, msg: &Message) -> CommandResult {
17 let guild_id: GuildId = msg.guild(&ctx.cache).context("missing server data")?.id;
18
19 let manager = songbird::get(ctx)
20 .await
21 .expect("missing songbird data")
22 .clone();
23 let has_handler = manager.get(guild_id).is_some();
24
25 if has_handler {
26 if let Err(e) = manager.remove(guild_id).await {
27 msg.channel_id.say(&ctx.http, format!("{:?}", e)).await?;
28 }
29
30 msg.channel_id.say(&ctx.http, "Left voice channel").await?;
31 } else {
32 msg.reply(ctx, "Not in a voice channel").await?;
33 }
34
35 Ok(())
36}