diff --git a/Maki/Discord.cs b/Maki/Discord.cs index f3c502d..79c11a2 100644 --- a/Maki/Discord.cs +++ b/Maki/Discord.cs @@ -674,8 +674,8 @@ namespace Maki private void ShardManager_OnMessageCreate(GatewayShard shard, Message message) { DiscordChannel channel = channels.Find(x => x.Id == message.ChannelId); - DiscordMember member = members.Find(x => x.User.Id == message.User.Id && x.Server == channel.Server); - DiscordMessage msg = new DiscordMessage(this, message, member, channel); + DiscordMember member = members.Where(x => x.User.Id == message.User.Id && x.Server == channel.Server).FirstOrDefault(); + DiscordMessage msg = new DiscordMessage(this, message, channel, member); messages.Add(msg); OnMessageCreate?.Invoke(msg); } @@ -696,7 +696,7 @@ namespace Maki RestResponse getMsg = RestClient.Request(RestRequestMethod.GET, RestEndpoints.ChannelMessage(message.ChannelId, message.Id)); DiscordChannel channel = channels.Where(x => x.Id == getMsg.Response.ChannelId).FirstOrDefault(); DiscordMember member = members.Where(x => x.User.Id == getMsg.Response.User.Id && (channel.Server == null || channel.Server == x.Server)).FirstOrDefault(); - msg = new DiscordMessage(this, getMsg.Response, member, channel); + msg = new DiscordMessage(this, getMsg.Response, channel, member); messages.Add(msg); } diff --git a/Maki/DiscordChannel.cs b/Maki/DiscordChannel.cs index 10b19ee..a2b5dea 100644 --- a/Maki/DiscordChannel.cs +++ b/Maki/DiscordChannel.cs @@ -50,7 +50,7 @@ namespace Maki } ); - DiscordMessage message = new DiscordMessage(client, msg.Response, client.members.Find(x => x.User.Id == msg.Response.User.Id), this); + DiscordMessage message = new DiscordMessage(client, msg.Response, this, client.members.Find(x => x.User.Id == msg.Response.User.Id)); client.messages.Add(message); return message; } diff --git a/Maki/DiscordMessage.cs b/Maki/DiscordMessage.cs index 452cbe5..fbec2f5 100644 --- a/Maki/DiscordMessage.cs +++ b/Maki/DiscordMessage.cs @@ -10,7 +10,8 @@ namespace Maki { public readonly ulong Id; public readonly DateTime Sent; - public readonly DiscordMember Sender; + public readonly DiscordMember Member; + public readonly DiscordUser User; public readonly DiscordChannel Channel; private readonly Discord client; @@ -26,15 +27,25 @@ namespace Maki || (Channel.Type != DiscordChannelType.Private && roles && client.members.Where(x => x.User == client.Me && x.Server == Channel.Server).First().Roles.Where(x => MentionsRoles.Contains(x)).Count() > 0) || MentionsUsers.Select(x => x.User).Contains(client.Me); - public bool IsMe => client.Me == Sender.User; + public bool IsMe => client.Me == User; - internal DiscordMessage(Discord discord, Message msg, DiscordMember member, DiscordChannel channel) + internal DiscordMessage(Discord discord, Message msg, DiscordChannel channel, DiscordMember member = null) { client = discord; Id = msg.Id; Sent = msg.Sent; Text = msg.Content; - Sender = member; + + if (member != null) + { + Member = member; + User = member.User; + } else + { + member = null; + User = client.users.Where(x => x.Id == msg.User.Id).FirstOrDefault(); + } + Channel = channel; MentionsUsers = client.members.Where(x => x.Server == channel.Server && msg.Mentions.Select(y => y.Id).Contains(x.User.Id)).ToArray(); MentionsRoles = client.roles.Where(x => x.Server == channel.Server && msg.MentionsRoles.Contains(x.Id)).ToArray();