aboutsummaryrefslogtreecommitdiff
path: root/src/commands/playback/types.rs
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2018-04-05 20:53:37 -0400
committerNathan Perry <avaglir@gmail.com>2018-04-05 20:53:37 -0400
commit1fda857d25c3d33e593951eef3ce713fa69a7025 (patch)
tree23f714c3fc7c7233e498307480109f3ab2f779e3 /src/commands/playback/types.rs
parent82aefce4f7c5f24730fb5da22ee426988ae4301a (diff)
start to integrate db support with commands
Diffstat (limited to 'src/commands/playback/types.rs')
-rw-r--r--src/commands/playback/types.rs29
1 files changed, 18 insertions, 11 deletions
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<String, Vec<u8>>,
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::<u64>("VOICE_CHANNEL"));