diff options
| author | Jokler <jokler@protonmail.com> | 2020-07-24 17:13:52 +0200 |
|---|---|---|
| committer | Jokler <jokler@protonmail.com> | 2020-07-24 17:13:52 +0200 |
| commit | 4e2e4afbef3eb8a4fdd6c08c8d531090825e6eb6 (patch) | |
| tree | 8563101e5415d552846bfc69c0dd851ff8e35391 /src/bot | |
| parent | 10ef0bc5bc1246f20b46e547eba97f4d36583e05 (diff) | |
| download | pokebot-4e2e4afbef3eb8a4fdd6c08c8d531090825e6eb6.tar.gz pokebot-4e2e4afbef3eb8a4fdd6c08c8d531090825e6eb6.zip | |
Resubscribe to channels when a new one is created
Diffstat (limited to 'src/bot')
| -rw-r--r-- | src/bot/master.rs | 15 | ||||
| -rw-r--r-- | src/bot/music.rs | 20 |
2 files changed, 28 insertions, 7 deletions
diff --git a/src/bot/master.rs b/src/bot/master.rs index 9e69444..4cdb490 100644 --- a/src/bot/master.rs +++ b/src/bot/master.rs @@ -187,11 +187,18 @@ impl MasterBot { } async fn on_message(&self, message: MusicBotMessage) -> Result<(), AudioPlayerError> { - if let MusicBotMessage::TextMessage(message) = message { - if let MessageTarget::Poke(who) = message.target { - info!("Poked by {}, creating bot for their channel", who); - self.spawn_bot_for(who).await; + match message { + MusicBotMessage::TextMessage(message) => { + if let MessageTarget::Poke(who) = message.target { + info!("Poked by {}, creating bot for their channel", who); + self.spawn_bot_for(who).await; + } + } + MusicBotMessage::ChannelCreated(_) => { + // TODO Only subscribe to one channel + self.teamspeak.subscribe_all(); } + _ => (), } Ok(()) diff --git a/src/bot/music.rs b/src/bot/music.rs index 96cc383..14a73f9 100644 --- a/src/bot/music.rs +++ b/src/bot/music.rs @@ -13,10 +13,10 @@ use tsclientlib::{data, ChannelId, ClientId, ConnectOptions, Identity, Invoker, use crate::audio_player::{AudioPlayer, AudioPlayerError, PollResult}; use crate::command::Command; +use crate::command::VolumeChange; use crate::playlist::Playlist; use crate::teamspeak as ts; use crate::youtube_dl::AudioMetadata; -use crate::command::VolumeChange; use ts::TeamSpeakConnection; #[derive(Debug)] @@ -53,6 +53,7 @@ pub enum MusicBotMessage { client: ClientId, old_channel: ChannelId, }, + ChannelCreated(ChannelId), ClientDisconnected { id: ClientId, client: data::Client, @@ -175,7 +176,11 @@ impl MusicBot { format!("") }; - self.send_message(&format!("Playing {} {}", ts::underline(&metadata.title), duration)); + self.send_message(&format!( + "Playing {} {}", + ts::underline(&metadata.title), + duration + )); self.set_description(&format!("Currently playing '{}'", metadata.title)); self.player.reset().unwrap(); self.player.set_metadata(metadata).unwrap(); @@ -273,6 +278,10 @@ impl MusicBot { self.with_teamspeak(|ts| ts.set_description(desc)); } + fn subscribe_all(&self) { + self.with_teamspeak(|ts| ts.subscribe_all()); + } + async fn on_text(&self, message: Message) -> Result<(), AudioPlayerError> { let msg = message.text; if msg.starts_with("!") { @@ -310,7 +319,8 @@ impl MusicBot { self.add_audio(url.to_string(), invoker.name).await; } Command::Search { query } => { - self.add_audio(format!("ytsearch:{}", query.join(" ")), invoker.name).await; + self.add_audio(format!("ytsearch:{}", query.join(" ")), invoker.name) + .await; } Command::Pause => { self.player.pause()?; @@ -415,6 +425,10 @@ impl MusicBot { let old_channel = client.channel; self.on_client_left_channel(old_channel); } + MusicBotMessage::ChannelCreated(_) => { + // TODO Only subscribe to one channel + self.subscribe_all(); + } MusicBotMessage::StateChange(state) => { self.on_state(state)?; } |
