Temp. moved built-ing event logging to Debug temporarily, improved login speed.
This commit is contained in:
@@ -28,9 +28,9 @@ namespace Discord
|
||||
private readonly ManualResetEventSlim _connectedEvent;
|
||||
private readonly TaskManager _taskManager;
|
||||
private readonly ServiceCollection _services;
|
||||
private readonly ConcurrentDictionary<ulong, Server> _servers;
|
||||
private readonly ConcurrentDictionary<ulong, Channel> _channels;
|
||||
private readonly ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId
|
||||
private ConcurrentDictionary<ulong, Server> _servers;
|
||||
private ConcurrentDictionary<ulong, Channel> _channels;
|
||||
private ConcurrentDictionary<ulong, Channel> _privateChannels; //Key = RecipientId
|
||||
private Dictionary<string, Region> _regions;
|
||||
|
||||
internal Logger Logger { get; }
|
||||
@@ -118,9 +118,10 @@ namespace Discord
|
||||
CancelToken = new CancellationToken(true);
|
||||
|
||||
//Cache
|
||||
_servers = new ConcurrentDictionary<ulong, Server>();
|
||||
_channels = new ConcurrentDictionary<ulong, Channel>();
|
||||
_privateChannels = new ConcurrentDictionary<ulong, Channel>();
|
||||
//ConcurrentLevel = 2 (only REST and WebSocket can add/remove)
|
||||
_servers = new ConcurrentDictionary<ulong, Server>(2, 0);
|
||||
_channels = new ConcurrentDictionary<ulong, Channel>(2, 0);
|
||||
_privateChannels = new ConcurrentDictionary<ulong, Channel>(2, 0);
|
||||
|
||||
//Serialization
|
||||
Serializer = new JsonSerializer();
|
||||
@@ -237,8 +238,8 @@ namespace Discord
|
||||
}
|
||||
}
|
||||
|
||||
ClientAPI.Token = token;
|
||||
var request = new LoginRequest() { Email = email, Password = password };
|
||||
ClientAPI.Token = token;
|
||||
var request = new LoginRequest();// { Email = email, Password = password };
|
||||
var response = await ClientAPI.Send(request).ConfigureAwait(false);
|
||||
token = response.Token;
|
||||
if (Config.CacheDir != null && token != oldToken && tokenPath != null)
|
||||
@@ -475,15 +476,26 @@ namespace Discord
|
||||
if (Config.LogLevel >= LogSeverity.Verbose)
|
||||
stopwatch = Stopwatch.StartNew();
|
||||
var data = e.Payload.ToObject<ReadyEvent>(Serializer);
|
||||
|
||||
int channelCount = 0;
|
||||
for (int i = 0; i < data.Guilds.Length; i++)
|
||||
channelCount += data.Guilds[i].Channels.Length;
|
||||
|
||||
//ConcurrencyLevel = 2 (only REST and WebSocket can add/remove)
|
||||
_servers = new ConcurrentDictionary<ulong, Server>(2, (int)(data.Guilds.Length * 1.05));
|
||||
_channels = new ConcurrentDictionary<ulong, Channel>(2, (int)(channelCount * 1.05));
|
||||
_privateChannels = new ConcurrentDictionary<ulong, Channel>(2, (int)(data.PrivateChannels.Length * 1.05));
|
||||
List<ulong> largeServers = new List<ulong>();
|
||||
|
||||
SessionId = data.SessionId;
|
||||
PrivateUser = new User(this, data.User.Id, null);
|
||||
PrivateUser.Update(data.User);
|
||||
CurrentUser = new Profile(this, data.User.Id);
|
||||
CurrentUser.Update(data.User);
|
||||
|
||||
List<ulong> largeServers = new List<ulong>();
|
||||
foreach (var model in data.Guilds)
|
||||
for (int i = 0; i < data.Guilds.Length; i++)
|
||||
{
|
||||
var model = data.Guilds[i];
|
||||
if (model.Unavailable != true)
|
||||
{
|
||||
var server = AddServer(model.Id);
|
||||
@@ -492,13 +504,15 @@ namespace Discord
|
||||
largeServers.Add(server.Id);
|
||||
}
|
||||
}
|
||||
foreach (var model in data.PrivateChannels)
|
||||
for (int i = 0; i < data.PrivateChannels.Length; i++)
|
||||
{
|
||||
var model = data.PrivateChannels[i];
|
||||
var channel = AddPrivateChannel(model.Id, model.Recipient.Id);
|
||||
channel.Update(model);
|
||||
}
|
||||
if (largeServers.Count > 0)
|
||||
GatewaySocket.SendRequestMembers(largeServers, "", 0);
|
||||
|
||||
if (Config.LogLevel >= LogSeverity.Verbose)
|
||||
{
|
||||
stopwatch.Stop();
|
||||
@@ -516,14 +530,11 @@ namespace Discord
|
||||
{
|
||||
var server = AddServer(data.Id);
|
||||
server.Update(data);
|
||||
|
||||
if (Config.LogEvents)
|
||||
{
|
||||
if (data.Unavailable != false)
|
||||
Logger.Info($"Server Created: {server.Name}");
|
||||
else
|
||||
Logger.Info($"Server Available: {server.Name}");
|
||||
}
|
||||
|
||||
if (data.Unavailable != false)
|
||||
Logger.Debug($"GUILD_CREATE: {server.Path}");
|
||||
else
|
||||
Logger.Debug($"GUILD_AVAILABLE: {server.Path}");
|
||||
|
||||
if (data.Unavailable != false)
|
||||
OnJoinedServer(server);
|
||||
@@ -539,8 +550,7 @@ namespace Discord
|
||||
{
|
||||
var before = Config.EnablePreUpdateEvents ? server.Clone() : null;
|
||||
server.Update(data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Server Updated: {server.Name}");
|
||||
Logger.Debug($"GUILD_UPDATE: {server.Path}");
|
||||
OnServerUpdated(before, server);
|
||||
}
|
||||
else
|
||||
@@ -553,13 +563,10 @@ namespace Discord
|
||||
Server server = RemoveServer(data.Id);
|
||||
if (server != null)
|
||||
{
|
||||
if (Config.LogEvents)
|
||||
{
|
||||
if (data.Unavailable != true)
|
||||
Logger.Info($"Server Destroyed: {server.Name}");
|
||||
else
|
||||
Logger.Info($"Server Unavailable: {server.Name}");
|
||||
}
|
||||
if (data.Unavailable != true)
|
||||
Logger.Debug($"GUILD_DELETE: {server.Path}");
|
||||
else
|
||||
Logger.Debug($"GUILD_UNAVAILABLE: {server.Path}");
|
||||
|
||||
OnServerUnavailable(server);
|
||||
if (data.Unavailable != true)
|
||||
@@ -589,8 +596,7 @@ namespace Discord
|
||||
if (channel != null)
|
||||
{
|
||||
channel.Update(data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Channel Created: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
||||
Logger.Debug($"CHANNEL_CREATE: {channel.Path}");
|
||||
OnChannelCreated(channel);
|
||||
}
|
||||
}
|
||||
@@ -603,8 +609,7 @@ namespace Discord
|
||||
{
|
||||
var before = Config.EnablePreUpdateEvents ? channel.Clone() : null;
|
||||
channel.Update(data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Channel Updated: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
||||
Logger.Debug($"CHANNEL_UPDATE: {channel.Path}");
|
||||
OnChannelUpdated(before, channel);
|
||||
}
|
||||
else
|
||||
@@ -617,8 +622,7 @@ namespace Discord
|
||||
var channel = RemoveChannel(data.Id);
|
||||
if (channel != null)
|
||||
{
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Channel Destroyed: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
||||
Logger.Debug($"CHANNEL_DELETE: {channel.Path}");
|
||||
OnChannelDestroyed(channel);
|
||||
}
|
||||
else
|
||||
@@ -636,8 +640,7 @@ namespace Discord
|
||||
var user = server.AddUser(data.User.Id);
|
||||
user.Update(data);
|
||||
user.UpdateActivity();
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"User Joined: {server.Name}/{user.Name}");
|
||||
Logger.Debug($"GUILD_MEMBER_ADD: {user.Path}");
|
||||
OnUserJoined(user);
|
||||
}
|
||||
else
|
||||
@@ -655,8 +658,7 @@ namespace Discord
|
||||
{
|
||||
var before = Config.EnablePreUpdateEvents ? user.Clone() : null;
|
||||
user.Update(data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"User Updated: {server.Name}/{user.Name}");
|
||||
Logger.Debug($"GUILD_MEMBER_UPDATE: {user.Path}");
|
||||
OnUserUpdated(before, user);
|
||||
}
|
||||
else
|
||||
@@ -675,8 +677,7 @@ namespace Discord
|
||||
var user = server.RemoveUser(data.User.Id);
|
||||
if (user != null)
|
||||
{
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"User Left: {server.Name}/{user.Name}");
|
||||
Logger.Debug($"GUILD_MEMBER_REMOVE: {user.Path}");
|
||||
OnUserLeft(user);
|
||||
}
|
||||
else
|
||||
@@ -698,6 +699,7 @@ namespace Discord
|
||||
user.Update(memberData);
|
||||
//OnUserAdded(user);
|
||||
}
|
||||
Logger.Debug($"GUILD_MEMBERS_CHUNK: {data.Members.Length} users");
|
||||
}
|
||||
else
|
||||
Logger.Warning("GUILD_MEMBERS_CHUNK referenced an unknown guild.");
|
||||
@@ -713,8 +715,7 @@ namespace Discord
|
||||
{
|
||||
var role = server.AddRole(data.Data.Id);
|
||||
role.Update(data.Data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Role Created: {server.Name}/{role.Name}");
|
||||
Logger.Debug($"GUILD_ROLE_CREATE: {role.Path}");
|
||||
OnRoleCreated(role);
|
||||
}
|
||||
else
|
||||
@@ -732,8 +733,7 @@ namespace Discord
|
||||
{
|
||||
var before = Config.EnablePreUpdateEvents ? role.Clone() : null;
|
||||
role.Update(data.Data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Role Updated: {server.Name}/{role.Name}");
|
||||
Logger.Debug($"GUILD_ROLE_UPDATE: {role.Path}");
|
||||
OnRoleUpdated(before, role);
|
||||
}
|
||||
else
|
||||
@@ -752,8 +752,7 @@ namespace Discord
|
||||
var role = server.RemoveRole(data.RoleId);
|
||||
if (role != null)
|
||||
{
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"Role Deleted: {server.Name}/{role.Name}");
|
||||
Logger.Debug($"GUILD_ROLE_DELETE: {role.Path}");
|
||||
OnRoleDeleted(role);
|
||||
}
|
||||
else
|
||||
@@ -774,8 +773,7 @@ namespace Discord
|
||||
var user = server.GetUser(data.User.Id);
|
||||
if (user != null)
|
||||
{
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"User Banned: {server.Name}/{user.Name}");
|
||||
Logger.Debug($"GUILD_BAN_ADD: {user.Path}");
|
||||
OnUserBanned(user);
|
||||
}
|
||||
else
|
||||
@@ -793,8 +791,7 @@ namespace Discord
|
||||
{
|
||||
var user = new User(this, data.User.Id, server);
|
||||
user.Update(data.User);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info($"User Unbanned: {server.Name}/{user.Name}");
|
||||
Logger.Debug($"GUILD_BAN_REMOVE: {user.Path}");
|
||||
OnUserUnbanned(user);
|
||||
}
|
||||
else
|
||||
@@ -838,9 +835,8 @@ namespace Discord
|
||||
|
||||
msg.Update(data);
|
||||
user.UpdateActivity();
|
||||
|
||||
if (Config.LogEvents)
|
||||
Logger.Verbose($"Message Received: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
||||
|
||||
Logger.Debug($"MESSAGE_CREATE: {channel.Path} ({user.Name ?? "Unknown"})");
|
||||
OnMessageReceived(msg);
|
||||
}
|
||||
else
|
||||
@@ -859,8 +855,7 @@ namespace Discord
|
||||
var msg = channel.GetMessage(data.Id, data.Author?.Id);
|
||||
var before = Config.EnablePreUpdateEvents ? msg.Clone() : null;
|
||||
msg.Update(data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Verbose($"Message Update: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
||||
Logger.Debug($"MESSAGE_UPDATE: {channel.Path} ({data.Author?.Username ?? "Unknown"})");
|
||||
OnMessageUpdated(before, msg);
|
||||
}
|
||||
else
|
||||
@@ -874,8 +869,7 @@ namespace Discord
|
||||
if (channel != null)
|
||||
{
|
||||
var msg = channel.RemoveMessage(data.Id);
|
||||
if (Config.LogEvents)
|
||||
Logger.Verbose($"Message Deleted: {channel.Server?.Name ?? "[Private]"}/{channel.Name}");
|
||||
Logger.Debug($"MESSAGE_DELETE: {channel.Path} ({msg.User?.Name ?? "Unknown"})");
|
||||
OnMessageDeleted(msg);
|
||||
}
|
||||
else
|
||||
@@ -908,9 +902,9 @@ namespace Discord
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
Logger.Debug($"PRESENCE_UPDATE: {user.Path}");
|
||||
var before = Config.EnablePreUpdateEvents ? user.Clone() : null;
|
||||
user.Update(data);
|
||||
//Logger.Verbose($"Presence Updated: {server.Name}/{user.Name}");
|
||||
OnUserUpdated(before, user);
|
||||
}
|
||||
/*else //Occurs when a user leaves a server
|
||||
@@ -929,13 +923,13 @@ namespace Discord
|
||||
if (channel.Recipient.Id == data.UserId)
|
||||
user = channel.Recipient;
|
||||
else
|
||||
return; ;
|
||||
break;
|
||||
}
|
||||
else
|
||||
user = channel.Server.GetUser(data.UserId);
|
||||
if (user != null)
|
||||
{
|
||||
//Logger.Verbose($"Is Typing: {channel.Server?.Name ?? "[Private]"}/{channel.Name}/{user.Name}");
|
||||
Logger.Debug($"TYPING_START: {channel.Path} ({user.Name})");
|
||||
OnUserIsTypingUpdated(channel, user);
|
||||
user.UpdateActivity();
|
||||
}
|
||||
@@ -955,6 +949,7 @@ namespace Discord
|
||||
var user = server.GetUser(data.UserId);
|
||||
if (user != null)
|
||||
{
|
||||
Logger.Debug($"VOICE_STATE_UPDATE: {user.Path}");
|
||||
var before = Config.EnablePreUpdateEvents ? user.Clone() : null;
|
||||
user.Update(data);
|
||||
//Logger.Verbose($"Voice Updated: {server.Name}/{user.Name}");
|
||||
@@ -979,8 +974,7 @@ namespace Discord
|
||||
PrivateUser.Update(data);
|
||||
foreach (var server in _servers)
|
||||
server.Value.CurrentUser.Update(data);
|
||||
if (Config.LogEvents)
|
||||
Logger.Info("Profile Updated");
|
||||
Logger.Debug($"USER_UPDATE");
|
||||
OnProfileUpdated(before, CurrentUser);
|
||||
}
|
||||
}
|
||||
@@ -996,6 +990,7 @@ namespace Discord
|
||||
case "VOICE_SERVER_UPDATE":
|
||||
case "GUILD_EMOJIS_UPDATE":
|
||||
case "MESSAGE_ACK":
|
||||
Logger.Debug($"{e.Type} [Ignored]");
|
||||
break;
|
||||
|
||||
//Others
|
||||
|
||||
@@ -16,10 +16,8 @@ namespace Discord
|
||||
/// <summary> Gets or sets the version of your application, used in the user agent. </summary>
|
||||
public string AppVersion { get; set; } = null;
|
||||
|
||||
/// <summary> Gets or sets the minimum log level severity that will be sent to the LogMessage event. Warning: setting this to debug will really hurt performance but should help investigate any internal issues. </summary>
|
||||
/// <summary> Gets or sets the minimum log level severity that will be sent to the LogMessage event. </summary>
|
||||
public LogSeverity LogLevel { get; set; } = LogSeverity.Info;
|
||||
/// <summary> Enables or disables the default event logger. </summary>
|
||||
public bool LogEvents { get; set; } = true;
|
||||
|
||||
//WebSocket
|
||||
|
||||
@@ -66,7 +64,6 @@ namespace Discord
|
||||
public const string InviteUrl = "https://discord.gg/";
|
||||
|
||||
public LogSeverity LogLevel { get; }
|
||||
public bool LogEvents { get; }
|
||||
|
||||
public int ConnectionTimeout { get; }
|
||||
public int ReconnectDelay { get; }
|
||||
@@ -83,7 +80,6 @@ namespace Discord
|
||||
internal DiscordConfig(DiscordConfigBuilder builder)
|
||||
{
|
||||
LogLevel = builder.LogLevel;
|
||||
LogEvents = builder.LogEvents;
|
||||
|
||||
ConnectionTimeout = builder.ConnectionTimeout;
|
||||
ReconnectDelay = builder.ReconnectDelay;
|
||||
|
||||
@@ -111,7 +111,7 @@ namespace Discord
|
||||
: this(client, id)
|
||||
{
|
||||
Server = server;
|
||||
if (server != null)
|
||||
if (server != null && Client.Config.UsePermissionsCache)
|
||||
{
|
||||
foreach (var user in server.Users)
|
||||
AddUser(user);
|
||||
@@ -131,9 +131,15 @@ namespace Discord
|
||||
Id = id;
|
||||
|
||||
_permissionOverwrites = new Dictionary<ulong, PermissionOverwrite>();
|
||||
_users = new ConcurrentDictionary<ulong, Member>();
|
||||
if (client.Config.UsePermissionsCache)
|
||||
{
|
||||
if (IsPrivate)
|
||||
_users = new ConcurrentDictionary<ulong, Member>(2, 2);
|
||||
else
|
||||
_users = new ConcurrentDictionary<ulong, Member>(2, (int)(Server.UserCount * 1.05));
|
||||
}
|
||||
if (client.Config.MessageCacheSize > 0)
|
||||
_messages = new ConcurrentDictionary<ulong, Message>();
|
||||
_messages = new ConcurrentDictionary<ulong, Message>(2, (int)(client.Config.MessageCacheSize * 1.05));
|
||||
}
|
||||
|
||||
internal void Update(ChannelReference model)
|
||||
@@ -542,8 +548,7 @@ namespace Discord
|
||||
#region Users
|
||||
internal void AddUser(User user)
|
||||
{
|
||||
if (!Client.Config.UsePermissionsCache)
|
||||
return;
|
||||
if (!Client.Config.UsePermissionsCache) return;
|
||||
|
||||
var perms = new ChannelPermissions();
|
||||
UpdatePermissions(user, ref perms);
|
||||
|
||||
@@ -46,9 +46,9 @@ namespace Discord
|
||||
}
|
||||
}
|
||||
|
||||
private readonly ConcurrentDictionary<ulong, Role> _roles;
|
||||
private readonly ConcurrentDictionary<ulong, Member> _users;
|
||||
private readonly ConcurrentDictionary<ulong, Channel> _channels;
|
||||
private ConcurrentDictionary<ulong, Role> _roles;
|
||||
private ConcurrentDictionary<ulong, Member> _users;
|
||||
private ConcurrentDictionary<ulong, Channel> _channels;
|
||||
private ulong _ownerId;
|
||||
private ulong? _afkChannelId;
|
||||
private int _userCount;
|
||||
@@ -117,9 +117,6 @@ namespace Discord
|
||||
Client = client;
|
||||
Id = id;
|
||||
|
||||
_channels = new ConcurrentDictionary<ulong, Channel>();
|
||||
_roles = new ConcurrentDictionary<ulong, Role>();
|
||||
_users = new ConcurrentDictionary<ulong, Member>();
|
||||
DefaultChannel = AddChannel(id);
|
||||
EveryoneRole = AddRole(id);
|
||||
}
|
||||
@@ -157,6 +154,7 @@ namespace Discord
|
||||
}
|
||||
if (model.Roles != null)
|
||||
{
|
||||
_roles = new ConcurrentDictionary<ulong, Role>(2, model.Roles.Length);
|
||||
foreach (var x in model.Roles)
|
||||
AddRole(x.Id).Update(x);
|
||||
}
|
||||
@@ -171,11 +169,13 @@ namespace Discord
|
||||
|
||||
if (model.Channels != null)
|
||||
{
|
||||
_channels = new ConcurrentDictionary<ulong, Channel>(2, (int)(model.Channels.Length * 1.05));
|
||||
foreach (var subModel in model.Channels)
|
||||
AddChannel(subModel.Id).Update(subModel);
|
||||
}
|
||||
if (model.Members != null)
|
||||
{
|
||||
_users = new ConcurrentDictionary<ulong, Member>(2, (int)(model.Members.Length * 1.05));
|
||||
foreach (var subModel in model.Members)
|
||||
AddUser(subModel.User.Id).Update(subModel);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user