From 1fda857d25c3d33e593951eef3ce713fa69a7025 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Thu, 5 Apr 2018 20:53:37 -0400 Subject: start to integrate db support with commands --- src/commands/playback/types.rs | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src/commands/playback/types.rs') diff --git a/src/commands/playback/types.rs b/src/commands/playback/types.rs index 41592ec..b9e1778 100644 --- a/src/commands/playback/types.rs +++ b/src/commands/playback/types.rs @@ -2,6 +2,9 @@ use serenity::client::bridge::voice::ClientVoiceManager; use typemap::Key; use std::sync::{Arc, RwLock}; use std::collections::VecDeque; + +use either::{Either, Left, Right}; + use super::*; pub struct VoiceManager; @@ -19,7 +22,7 @@ impl VoiceManager { #[derive(Clone, Debug)] pub struct PlayArgs { - pub url: String, + pub data: Either>, pub initiator: String, pub sender_channel: ChannelId, } @@ -90,7 +93,7 @@ impl PlayQueue { let mut manager = voice_manager.lock(); manager.leave(*TARGET_GUILD_ID); - debug!("disconnected due to inactivity"); + debug!("disconnected because playback finished"); } continue; } @@ -98,18 +101,22 @@ impl PlayQueue { let mut queue = queue_lck.write().unwrap(); let item = queue.queue.pop_front().unwrap(); - trace!("checking ytdl for: {}", item.url); - - let src = match ytdl(&item.url) { - Ok(src) => src, - Err(e) => { - error!("bad link: {}; {:?}", &item.url, e); - let _ = send(item.sender_channel, &format!("what the fuck"), false); - continue; + let src = match item.data { + Left(ref url) => { + match ytdl(url) { + Ok(src) => src, + Err(e) => { + error!("bad link: {}; {:?}", url, e); + let _ = send(item.sender_channel, "what the fuck", false); + continue; + } + } + }, + Right(ref vec) => { + ::serenity::voice::opus(true, ::std::io::Cursor::new(vec.clone())) } }; - trace!("got ytdl item for {}", item.url); let mut manager = voice_manager.lock(); let handler = manager.join(*TARGET_GUILD_ID, must_env_lookup::("VOICE_CHANNEL")); -- cgit v1.3.1