From 3580c526c83c05909116760f04e971864684ae53 Mon Sep 17 00:00:00 2001 From: RogueException Date: Sun, 27 Dec 2015 02:29:35 -0400 Subject: [PATCH] Removed ban cache, fixed user occasionally being null in MessageReceived --- src/Discord.Net/DiscordClient.cs | 70 ++++++++++++++++---------------- src/Discord.Net/Models/Server.cs | 14 +------ 2 files changed, 35 insertions(+), 49 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 6063b2271..b833ddd17 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -708,7 +708,6 @@ namespace Discord var server = GetServer(data.GuildId); if (server != null) { - server.AddBan(data.UserId); if (Config.LogEvents) Logger.Info($"User Banned: {server.Name}/{data.UserId}"); OnUserBanned(server, data.UserId); @@ -721,12 +720,9 @@ namespace Discord var server = GetServer(data.GuildId); if (server != null) { - if (server.RemoveBan(data.UserId)) - { - if (Config.LogEvents) - Logger.Info($"User Unbanned: {server.Name}/{data.UserId}"); - OnUserUnbanned(server, data.UserId); - } + if (Config.LogEvents) + Logger.Info($"User Unbanned: {server.Name}/{data.UserId}"); + OnUserUnbanned(server, data.UserId); } } break; @@ -739,38 +735,40 @@ namespace Discord Channel channel = GetChannel(data.ChannelId); if (channel != null) { - Message msg = null; - bool isAuthor = data.Author.Id == CurrentUser.Id; - //ulong nonce = 0; - - /*if (data.Author.Id == _privateUser.Id && Config.UseMessageQueue) - { - if (data.Nonce != null && ulong.TryParse(data.Nonce, out nonce)) - msg = _messages[nonce]; - }*/ - if (msg == null) - { - msg = channel.AddMessage(data.Id, data.Author.Id, data.Timestamp.Value); - //nonce = 0; - } - - msg.Update(data); - var user = msg.User; + var user = channel.GetUser(data.Author.Id); if (user != null) - user.UpdateActivity();// data.Timestamp); - - //Remapped queued message - /*if (nonce != 0) { - msg = _messages.Remap(nonce, data.Id); - msg.Id = data.Id; - RaiseMessageSent(msg); - }*/ + Message msg = null; + bool isAuthor = data.Author.Id == CurrentUser.Id; + //ulong nonce = 0; + + /*if (data.Author.Id == _privateUser.Id && Config.UseMessageQueue) + { + if (data.Nonce != null && ulong.TryParse(data.Nonce, out nonce)) + msg = _messages[nonce]; + }*/ + if (msg == null) + { + msg = channel.AddMessage(data.Id, data.Author.Id, data.Timestamp.Value); + //nonce = 0; + } + + //Remapped queued message + /*if (nonce != 0) + { + msg = _messages.Remap(nonce, data.Id); + msg.Id = data.Id; + RaiseMessageSent(msg); + }*/ - msg.State = MessageState.Normal; - if (Config.LogEvents) - Logger.Verbose($"Message Received: {channel.Server?.Name ?? "[Private]"}/{channel.Name}"); - OnMessageReceived(msg); + msg.Update(data); + user.UpdateActivity(); + + msg.State = MessageState.Normal; + if (Config.LogEvents) + Logger.Verbose($"Message Received: {channel.Server?.Name ?? "[Private]"}/{channel.Name}"); + OnMessageReceived(msg); + } } } break; diff --git a/src/Discord.Net/Models/Server.cs b/src/Discord.Net/Models/Server.cs index 11f256954..f9b8a8898 100644 --- a/src/Discord.Net/Models/Server.cs +++ b/src/Discord.Net/Models/Server.cs @@ -32,7 +32,6 @@ namespace Discord private readonly ConcurrentDictionary _roles; private readonly ConcurrentDictionary _users; private readonly ConcurrentDictionary _channels; - private readonly ConcurrentDictionary _bans; private ulong _ownerId; private ulong? _afkChannelId; @@ -64,9 +63,7 @@ namespace Discord public User CurrentUser => GetUser(Client.CurrentUser.Id); /// Gets the URL to this user's current avatar. public string IconUrl => GetIconUrl(Id, IconId); - - /// Gets a collection of the ids of all users banned on this server. - public IEnumerable BannedUserIds => _bans.Select(x => x.Key); + /// Gets a collection of all channels in this server. public IEnumerable AllChannels => _channels.Select(x => x.Value); /// Gets a collection of text channels in this server. @@ -86,7 +83,6 @@ namespace Discord _channels = new ConcurrentDictionary(); _roles = new ConcurrentDictionary(); _users = new ConcurrentDictionary(); - _bans = new ConcurrentDictionary(); DefaultChannel = AddChannel(id); EveryoneRole = AddRole(id); } @@ -176,14 +172,6 @@ namespace Discord } #region Bans - internal void AddBan(ulong banId) - => _bans.TryAdd(banId, true); - internal bool RemoveBan(ulong banId) - { - bool ignored; - return _bans.TryRemove(banId, out ignored); - } - public Task Ban(User user, int pruneDays = 0) { var request = new AddGuildBanRequest(user.Server.Id, user.Id)