use serenity; use std::sync::Arc; use super::super::prelude::*; pub struct List { media: Arc, } impl List { pub fn new(media_data: Arc) -> List { List { media: media_data } } } impl serenity::framework::standard::Command for List { #[allow(unreachable_code, unused_mut)] fn execute( &self, _: &mut serenity::client::Context, msg: &serenity::model::channel::Message, _: serenity::framework::standard::Args, ) -> ::std::result::Result<(), serenity::framework::standard::CommandError> { let mut output = String::new(); { let playlist_mutex = self.media.playlist_mut(); let playlist = playlist_mutex.borrow(); output += &format!( "{} {} queued\n", playlist.len(), if playlist.len() == 1 { "song" } else { "songs" } ); for (i, song) in playlist.iter().enumerate() { output += &format!("\t{}.\t{}\n", i + 1, song.name.clone()); } } print_error!(msg.channel_id.say(output)); Ok(()) } }