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