Fixed private channel crashes
This commit is contained in:
@@ -24,22 +24,22 @@ namespace Discord
|
|||||||
|
|
||||||
public sealed class LogMessageEventArgs : EventArgs
|
public sealed class LogMessageEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly LogMessageSeverity Severity;
|
public LogMessageSeverity Severity { get; }
|
||||||
public readonly LogMessageSource Source;
|
public LogMessageSource Source { get; }
|
||||||
public readonly string Message;
|
public string Message { get; }
|
||||||
|
|
||||||
internal LogMessageEventArgs(LogMessageSeverity severity, LogMessageSource source, string msg) { Severity = severity; Source = source; Message = msg; }
|
internal LogMessageEventArgs(LogMessageSeverity severity, LogMessageSource source, string msg) { Severity = severity; Source = source; Message = msg; }
|
||||||
}
|
}
|
||||||
public sealed class ServerEventArgs : EventArgs
|
public sealed class ServerEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Server Server;
|
public Server Server { get; }
|
||||||
public string ServerId => Server.Id;
|
public string ServerId => Server.Id;
|
||||||
|
|
||||||
internal ServerEventArgs(Server server) { Server = server; }
|
internal ServerEventArgs(Server server) { Server = server; }
|
||||||
}
|
}
|
||||||
public sealed class ChannelEventArgs : EventArgs
|
public sealed class ChannelEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Channel Channel;
|
public Channel Channel { get; }
|
||||||
public string ChannelId => Channel.Id;
|
public string ChannelId => Channel.Id;
|
||||||
public Server Server => Channel.Server;
|
public Server Server => Channel.Server;
|
||||||
public string ServerId => Channel.ServerId;
|
public string ServerId => Channel.ServerId;
|
||||||
@@ -48,14 +48,14 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
public sealed class UserEventArgs : EventArgs
|
public sealed class UserEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly User User;
|
public User User { get; }
|
||||||
public string UserId => User.Id;
|
public string UserId => User.Id;
|
||||||
|
|
||||||
internal UserEventArgs(User user) { User = user; }
|
internal UserEventArgs(User user) { User = user; }
|
||||||
}
|
}
|
||||||
public sealed class MessageEventArgs : EventArgs
|
public sealed class MessageEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Message Message;
|
public Message Message { get; }
|
||||||
public string MessageId => Message.Id;
|
public string MessageId => Message.Id;
|
||||||
public Member Member => Message.Member;
|
public Member Member => Message.Member;
|
||||||
public Channel Channel => Message.Channel;
|
public Channel Channel => Message.Channel;
|
||||||
@@ -69,7 +69,7 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
public sealed class RoleEventArgs : EventArgs
|
public sealed class RoleEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Role Role;
|
public Role Role { get; }
|
||||||
public string RoleId => Role.Id;
|
public string RoleId => Role.Id;
|
||||||
public Server Server => Role.Server;
|
public Server Server => Role.Server;
|
||||||
public string ServerId => Role.ServerId;
|
public string ServerId => Role.ServerId;
|
||||||
@@ -78,9 +78,9 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
public sealed class BanEventArgs : EventArgs
|
public sealed class BanEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly User User;
|
public User User { get; }
|
||||||
public readonly string UserId;
|
public string UserId { get; }
|
||||||
public readonly Server Server;
|
public Server Server { get; }
|
||||||
public string ServerId => Server.Id;
|
public string ServerId => Server.Id;
|
||||||
|
|
||||||
internal BanEventArgs(User user, string userId, Server server)
|
internal BanEventArgs(User user, string userId, Server server)
|
||||||
@@ -92,7 +92,7 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
public sealed class MemberEventArgs : EventArgs
|
public sealed class MemberEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Member Member;
|
public Member Member { get; }
|
||||||
public User User => Member.User;
|
public User User => Member.User;
|
||||||
public string UserId => Member.UserId;
|
public string UserId => Member.UserId;
|
||||||
public Server Server => Member.Server;
|
public Server Server => Member.Server;
|
||||||
@@ -102,25 +102,24 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
public sealed class UserTypingEventArgs : EventArgs
|
public sealed class UserTypingEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Member Member;
|
public Channel Channel { get; }
|
||||||
public readonly Channel Channel;
|
|
||||||
public string ChannelId => Channel.Id;
|
public string ChannelId => Channel.Id;
|
||||||
public Server Server => Channel.Server;
|
public Server Server => Channel.Server;
|
||||||
public string ServerId => Channel.ServerId;
|
public string ServerId => Channel.ServerId;
|
||||||
public User User => Member.User;
|
public User User { get; }
|
||||||
public string UserId => Member.UserId;
|
public string UserId => User.Id;
|
||||||
|
|
||||||
internal UserTypingEventArgs(Member member, Channel channel)
|
internal UserTypingEventArgs(User user, Channel channel)
|
||||||
{
|
{
|
||||||
Member = member;
|
User = user;
|
||||||
Channel = channel;
|
Channel = channel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*public sealed class VoiceServerUpdatedEventArgs : EventArgs
|
/*public sealed class VoiceServerUpdatedEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public readonly Server Server;
|
public Server Server { get; }
|
||||||
public string ServerId => Server.Id;
|
public string ServerId => Server.Id;
|
||||||
public readonly string Endpoint;
|
public string Endpoint { get; }
|
||||||
internal VoiceServerUpdatedEventArgs(Server server, string endpoint)
|
internal VoiceServerUpdatedEventArgs(Server server, string endpoint)
|
||||||
{
|
{
|
||||||
Server = server;
|
Server = server;
|
||||||
@@ -295,11 +294,11 @@ namespace Discord
|
|||||||
if (MemberVoiceStateUpdated != null)
|
if (MemberVoiceStateUpdated != null)
|
||||||
MemberVoiceStateUpdated(this, new MemberEventArgs(member));
|
MemberVoiceStateUpdated(this, new MemberEventArgs(member));
|
||||||
}
|
}
|
||||||
public event EventHandler<UserTypingEventArgs> MemberIsTyping;
|
public event EventHandler<UserTypingEventArgs> UserIsTyping;
|
||||||
private void RaiseMemberIsTyping(Member member, Channel channel)
|
private void RaiseUserIsTyping(User user, Channel channel)
|
||||||
{
|
{
|
||||||
if (MemberIsTyping != null)
|
if (UserIsTyping != null)
|
||||||
MemberIsTyping(this, new UserTypingEventArgs(member, channel));
|
UserIsTyping(this, new UserTypingEventArgs(user, channel));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Voice
|
//Voice
|
||||||
|
|||||||
@@ -120,29 +120,29 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, "Connected");
|
Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, "Connected");
|
||||||
Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, "Disconnected");
|
Disconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, "Disconnected");
|
||||||
ServerCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Server: {e.Server.Name} ({e.Server.Id})");
|
ServerCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Server: {e.Server?.Name} ({e.ServerId})");
|
||||||
ServerDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Destroyed Server: {e.Server.Name} ({e.Server.Id})");
|
ServerDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Destroyed Server: {e.Server?.Name} ({e.ServerId})");
|
||||||
ServerUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Server: {e.Server.Name} ({e.Server.Id})");
|
ServerUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Server: {e.Server?.Name} ({e.ServerId})");
|
||||||
UserUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated User: {e.User.Name} ({e.UserId})");
|
UserUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated User: {e.User.Name} ({e.UserId})");
|
||||||
ChannelCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Channel: {e.Server.Name}/{e.Channel.Name} ({e.ServerId}/{e.ChannelId})");
|
UserIsTyping += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated User (Is Typing): {e.Server?.Name ?? "[Private]"}/{e.Channel.Name}/{e.User.Name} ({e.ServerId ?? "0"}/{e.ChannelId}/{e.UserId})");
|
||||||
ChannelDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Destroyed Channel: {e.Server.Name}/{e.Channel.Name} ({e.ServerId}/{e.ChannelId})");
|
ChannelCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Channel: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name} ({e.ServerId ?? "0"}/{e.ChannelId})");
|
||||||
ChannelUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Channel: {e.Server.Name}/{e.Channel.Name} ({e.ServerId}/{e.ChannelId})");
|
ChannelDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Destroyed Channel: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name} ({e.ServerId ?? "0"}/{e.ChannelId})");
|
||||||
MessageCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Message: {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
|
ChannelUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Channel: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name} ({e.ServerId ?? "0"}/{e.ChannelId})");
|
||||||
MessageDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Deleted Message: {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
|
MessageCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Message: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name}/{e.MessageId} ({e.ServerId ?? "0"}/{e.ChannelId}/{e.MessageId})");
|
||||||
MessageUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Message: {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
|
MessageDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Deleted Message: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name}/{e.MessageId} ({e.ServerId ?? "0"}/{e.ChannelId}/{e.MessageId})");
|
||||||
MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Read Message (Remotely): {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
|
MessageUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Message: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name}/{e.MessageId} ({e.ServerId ?? "0"}/{e.ChannelId}/{e.MessageId})");
|
||||||
MessageSent += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Sent Message: {e.Server.Name}/{e.Channel.Name}/{e.MessageId} ({e.ServerId}/{e.ChannelId}/{e.MessageId})");
|
MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Read Message (Remotely): {e.Server?.Name ?? "[Private]"}/{e.Channel.Name}/{e.MessageId} ({e.ServerId ?? "0"}/{e.ChannelId}/{e.MessageId})");
|
||||||
RoleCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
|
MessageSent += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Sent Message: {e.Server?.Name ?? "[Private]"}/{e.Channel.Name}/{e.MessageId} ({e.ServerId ?? "0"}/{e.ChannelId}/{e.MessageId})");
|
||||||
RoleUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
|
RoleCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Created Role: {e.Server?.Name ?? "[Private]"}/{e.Role.Name} ({e.ServerId ?? "0"}/{e.RoleId}).");
|
||||||
RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Deleted Role: {e.Server.Name}/{e.Role.Name} ({e.ServerId}/{e.RoleId}).");
|
RoleUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Role: {e.Server?.Name ?? "[Private]"}/{e.Role.Name} ({e.ServerId ?? "0"}/{e.RoleId}).");
|
||||||
BanAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Added Ban: {e.Server.Name}/{e.User?.Name ?? "Unknown"} ({e.ServerId}/{e.UserId}).");
|
RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Deleted Role: {e.Server?.Name ?? "[Private]"}/{e.Role.Name} ({e.ServerId ?? "0"}/{e.RoleId}).");
|
||||||
BanRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Removed Ban: {e.Server.Name}/{e.User?.Name ?? "Unknown"} ({e.ServerId}/{e.UserId}).");
|
BanAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Added Ban: {e.Server?.Name ?? "[Private]"}/{e.User?.Name ?? "Unknown"} ({e.ServerId ?? "0"}/{e.UserId}).");
|
||||||
MemberAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Added Member: {e.Server.Name}/{e.User.Name} ({e.ServerId}/{e.UserId}).");
|
BanRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Removed Ban: {e.Server?.Name ?? "[Private]"}/{e.User?.Name ?? "Unknown"} ({e.ServerId ?? "0"}/{e.UserId}).");
|
||||||
MemberRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Removed Member: {e.Server.Name}/{e.User.Name} ({e.ServerId}/{e.UserId}).");
|
MemberAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Added Member: {e.Server?.Name ?? "[Private]"}/{e.User.Name} ({e.ServerId ?? "0"}/{e.UserId}).");
|
||||||
MemberUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member: {e.Server.Name}/{e.User.Name} ({e.ServerId}/{e.UserId}).");
|
MemberRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Removed Member: {e.Server?.Name ?? "[Private]"}/{e.User.Name} ({e.ServerId ?? "0"}/{e.UserId}).");
|
||||||
MemberPresenceUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member (Presence): {e.Server.Name}/{e.User.Name} ({e.ServerId}/{e.UserId})");
|
MemberUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member: {e.Server?.Name ?? "[Private]"}/{e.User.Name} ({e.ServerId ?? "0"}/{e.UserId}).");
|
||||||
MemberVoiceStateUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member (Voice State): {e.Server.Name}/{e.User.Name} ({e.ServerId}/{e.UserId})");
|
MemberPresenceUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member (Presence): {e.Server?.Name ?? "[Private]"}/{e.User.Name} ({e.ServerId ?? "0"}/{e.UserId})");
|
||||||
MemberIsTyping += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member (Is Typing): {e.Server.Name}/{e.Channel.Name}/{e.User.Name} ({e.ServerId}/{e.ChannelId}/{e.UserId})");
|
MemberVoiceStateUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Updated Member (Voice State): {e.Server?.Name ?? "[Private]"}/{e.User.Name} ({e.ServerId ?? "0"}/{e.UserId})");
|
||||||
VoiceConnected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Voice Connected");
|
VoiceConnected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Voice Connected");
|
||||||
VoiceDisconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Voice Disconnected");
|
VoiceDisconnected += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Voice Disconnected");
|
||||||
|
|
||||||
@@ -429,16 +429,13 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var data = e.Payload.ToObject<Events.TypingStart>(_serializer);
|
var data = e.Payload.ToObject<Events.TypingStart>(_serializer);
|
||||||
var channel = _channels[data.ChannelId];
|
var channel = _channels[data.ChannelId];
|
||||||
if (_config.TrackActivity)
|
|
||||||
{
|
|
||||||
var user = _users[data.UserId];
|
var user = _users[data.UserId];
|
||||||
user.UpdateActivity(DateTime.UtcNow);
|
if (user != null)
|
||||||
}
|
|
||||||
if (channel != null)
|
|
||||||
{
|
{
|
||||||
var member = _members[data.UserId, channel.ServerId];
|
if (_config.TrackActivity)
|
||||||
if (member != null)
|
user.UpdateActivity(DateTime.UtcNow);
|
||||||
RaiseEvent(nameof(MemberIsTyping), () => RaiseMemberIsTyping(member, channel));
|
if (channel != null)
|
||||||
|
RaiseEvent(nameof(UserIsTyping), () => RaiseUserIsTyping(user, channel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user