aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLakelezz <[email protected]>2017-10-23 21:10:47 +0200
committerZeyla Hellyer <[email protected]>2017-10-23 12:10:47 -0700
commite02d5fb8171b11214e1502c6754fef1972bbf1b9 (patch)
tree180de3f7201d36d2a81a8d85d9d4870d82efddc6 /src
parentUpdate dependencies (diff)
downloadserenity-e02d5fb8171b11214e1502c6754fef1972bbf1b9.tar.xz
serenity-e02d5fb8171b11214e1502c6754fef1972bbf1b9.zip
Properly update emojis, fix shard retries, fix cs
* If a guild's emojis are being altered, Serenity will straight up use the new `HashMap` instead of just extending. If `connect()` returns an `Err`, it will retry connecting. Cleaned up `help_command.rs`.
Diffstat (limited to 'src')
-rw-r--r--src/framework/standard/help_commands.rs6
-rw-r--r--src/gateway/shard.rs18
-rw-r--r--src/model/event.rs4
3 files changed, 22 insertions, 6 deletions
diff --git a/src/framework/standard/help_commands.rs b/src/framework/standard/help_commands.rs
index 5c1c58f..6b85239 100644
--- a/src/framework/standard/help_commands.rs
+++ b/src/framework/standard/help_commands.rs
@@ -113,8 +113,7 @@ pub fn with_embeds(_: &mut Context,
CommandOrAlias::Command(ref cmd) => {
if has_all_requirements(cmd, msg) {
found = Some((command_name, cmd));
- }
- else {
+ } else {
break;
}
},
@@ -125,8 +124,7 @@ pub fn with_embeds(_: &mut Context,
CommandOrAlias::Command(ref cmd) => {
if has_all_requirements(cmd, msg) {
found = Some((name, cmd));
- }
- else {
+ } else {
break;
}
},
diff --git a/src/gateway/shard.rs b/src/gateway/shard.rs
index 87940fd..3a8209d 100644
--- a/src/gateway/shard.rs
+++ b/src/gateway/shard.rs
@@ -5,6 +5,7 @@ use std::io::Write;
use std::net::Shutdown;
use std::sync::{Arc, Mutex};
use std::time::{Duration as StdDuration, Instant};
+use std::thread;
use super::{ConnectionStage, GatewayError};
use websocket::client::Url;
use websocket::message::{CloseData, OwnedMessage};
@@ -126,7 +127,7 @@ impl Shard {
token: Arc<Mutex<String>>,
shard_info: [u64; 2])
-> Result<Shard> {
- let client = connect(&*ws_url.lock().unwrap())?;
+ let client = connecting(&*ws_url.lock().unwrap());
let current_presence = (None, OnlineStatus::Online, false);
let heartbeat_instants = (None, None);
@@ -1047,3 +1048,18 @@ fn build_gateway_url(base: &str) -> Result<Url> {
Error::Gateway(GatewayError::BuildingUrl)
})
}
+
+/// Tries to connect and upon failure, retries.
+fn connecting(uri: &str) -> WsClient {
+ let waiting_time = 30;
+
+ loop {
+ match connect(&uri) {
+ Ok(client) => return client,
+ Err(why) => {
+ warn!("Connecting failed: {:?}\n Will retry in {} seconds.", why, waiting_time);
+ thread::sleep(StdDuration::from_secs(waiting_time));
+ },
+ };
+ }
+}
diff --git a/src/model/event.rs b/src/model/event.rs
index 086f422..d4148b9 100644
--- a/src/model/event.rs
+++ b/src/model/event.rs
@@ -404,7 +404,9 @@ impl CacheUpdate for GuildEmojisUpdateEvent {
fn update(&mut self, cache: &mut Cache) -> Option<()> {
cache.guilds.get_mut(&self.guild_id).map(|guild| {
- guild.with_mut(|g| g.emojis.extend(self.emojis.clone()))
+ guild.with_mut(|g| {
+ g.emojis.clone_from(&self.emojis)
+ });
});
None