diff options
| author | Jokler <jokler@protonmail.com> | 2020-08-11 16:50:02 +0200 |
|---|---|---|
| committer | Jokler <jokler@protonmail.com> | 2020-08-11 16:50:02 +0200 |
| commit | 1beccb77e57c53051160d664ccbb087835ac015a (patch) | |
| tree | bc8d45ec2d036965e11361a7b799941c400cb82a /src/bot/master.rs | |
| parent | 681950517d511d1c4b8e465f9b9758c027ecd6bf (diff) | |
| download | pokebot-1beccb77e57c53051160d664ccbb087835ac015a.tar.gz pokebot-1beccb77e57c53051160d664ccbb087835ac015a.zip | |
Shut down on disconnect
Diffstat (limited to 'src/bot/master.rs')
| -rw-r--r-- | src/bot/master.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/bot/master.rs b/src/bot/master.rs index 4cdb490..a9d1133 100644 --- a/src/bot/master.rs +++ b/src/bot/master.rs @@ -88,11 +88,19 @@ impl MasterBot { let msg_loop = async move { 'outer: loop { while let Some(msg) = rx.recv().await { - if let MusicBotMessage::Quit(reason) = msg { - cbot.teamspeak.disconnect(&reason); - break 'outer; + match msg { + MusicBotMessage::Quit(reason) => { + cbot.teamspeak.disconnect(&reason); + break 'outer; + } + MusicBotMessage::ClientDisconnected { id, .. } => { + if id == cbot.my_id() { + // TODO Reconnect since quit was not called + break 'outer; + } + }, + _ => cbot.on_message(msg).await.unwrap(), } - cbot.on_message(msg).await.unwrap(); } } }; @@ -204,6 +212,10 @@ impl MasterBot { Ok(()) } + fn my_id(&self) -> ClientId { + self.teamspeak.my_id() + } + pub fn bot_data(&self, name: String) -> Option<crate::web_server::BotData> { let music_bots = self.music_bots.read().unwrap(); let bot = music_bots.connected_bots.get(&name)?; |
