52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
use serenity;
|
|
|
|
use std::sync::Arc;
|
|
|
|
use super::super::prelude::*;
|
|
|
|
pub struct List {
|
|
media: Arc<MediaData>,
|
|
}
|
|
|
|
impl List {
|
|
pub fn new(media_data: Arc<MediaData>) -> 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" }
|
|
);
|
|
|
|
let max_output = 5;
|
|
|
|
for (i, song) in playlist.iter().enumerate() {
|
|
if i < max_output {
|
|
output += &format!("\t{}.\t{}\n", i + 1, song.name.clone());
|
|
} else {
|
|
output += &format!("\t... and {} more", playlist.len() - max_output);
|
|
}
|
|
}
|
|
}
|
|
|
|
print_error!(msg.channel_id.say(output));
|
|
|
|
Ok(())
|
|
}
|
|
}
|