From 4e2e4afbef3eb8a4fdd6c08c8d531090825e6eb6 Mon Sep 17 00:00:00 2001 From: Jokler Date: Fri, 24 Jul 2020 17:13:52 +0200 Subject: Resubscribe to channels when a new one is created --- src/teamspeak/mod.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/teamspeak/mod.rs') diff --git a/src/teamspeak/mod.rs b/src/teamspeak/mod.rs index 4d31f2e..b53d1d0 100644 --- a/src/teamspeak/mod.rs +++ b/src/teamspeak/mod.rs @@ -35,6 +35,15 @@ fn get_message<'a>(event: &Event) -> Option { invoker: sender.clone(), text: msg.clone(), })), + Event::PropertyAdded { + id: property, + invoker: _, + } => match property { + PropertyId::Channel(id) => { + Some(MusicBotMessage::ChannelCreated(*id)) + } + _ => None, + }, Event::PropertyChanged { id: property, old: from, @@ -188,7 +197,7 @@ impl TeamSpeakConnection { .lock() .to_mut() .get_client(&self.conn.lock().own_client) - .expect("Can get myself") + .expect("can get myself") .set_description(desc) .map_err(|e| error!("Failed to change description: {}", e)), ); @@ -204,16 +213,25 @@ impl TeamSpeakConnection { ); } - pub fn send_message_to_user(&self, id: ClientId, text: &str) { + pub fn send_message_to_user(&self, client: ClientId, text: &str) { tokio::spawn( self.conn .lock() .to_mut() - .send_message(MessageTarget::Client(id), text) + .send_message(MessageTarget::Client(client), text) .map_err(|e| error!("Failed to send message: {}", e)), ); } + pub fn subscribe_all(&self) { + let packet = self.conn.lock().to_mut().server.set_subscribed(true); + tokio::spawn( + self.conn + .send_packet(packet) + .map_err(|e| error!("Failed to send subscribe packet: {}", e)), + ); + } + pub fn disconnect(&self, reason: &str) { let opt = DisconnectOptions::new() .reason(Reason::Clientdisconnect) -- cgit v1.2.3-70-g09d2