diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs index 602a790a5..8caaa2532 100644 --- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs +++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs @@ -35,7 +35,7 @@ namespace Discord.Rest public static async Task RemoveReactionAsync(IMessage msg, IUser user, string emoji, BaseDiscordClient client, RequestOptions options) { - await client.ApiClient.RemoveReactionAsync(msg.Channel.Id, msg.Id, user.Id, emoji, options); + await client.ApiClient.RemoveReactionAsync(msg.Channel.Id, msg.Id, user.Id, emoji, options).ConfigureAwait(false); } public static async Task> GetReactionUsersAsync(IMessage msg, string emoji, diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 53deeffef..238cdbcb1 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1313,7 +1313,9 @@ namespace Discord.WebSocket if (channel != null) { SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - SocketReaction reaction = new SocketReaction(data); + var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly); + SocketReaction reaction = new SocketReaction(data, channel, Optional.Create(cachedMsg), Optional.Create(user)); + if (cachedMsg != null) { cachedMsg.AddReaction(reaction); @@ -1338,7 +1340,8 @@ namespace Discord.WebSocket if (channel != null) { SocketUserMessage cachedMsg = channel.GetCachedMessage(data.MessageId) as SocketUserMessage; - SocketReaction reaction = new SocketReaction(data); + var user = await channel.GetUserAsync(data.UserId, CacheMode.CacheOnly); + SocketReaction reaction = new SocketReaction(data, channel, Optional.Create(cachedMsg), Optional.Create(user)); if (cachedMsg != null) { cachedMsg.RemoveReaction(reaction); diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketReaction.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketReaction.cs index 0ac8c4342..c2e544a2c 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketReaction.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketReaction.cs @@ -8,17 +8,21 @@ namespace Discord.WebSocket { public class SocketReaction : IReaction { - internal SocketReaction(Model model) + internal SocketReaction(Model model, ISocketMessageChannel channel, Optional message, Optional user) { - UserId = model.UserId; + Channel = channel; + Message = message; MessageId = model.MessageId; - ChannelId = model.ChannelId; + User = user; + UserId = model.UserId; Emoji = Emoji.FromApi(model.Emoji); } public ulong UserId { get; private set; } + public Optional User { get; private set; } public ulong MessageId { get; private set; } - public ulong ChannelId { get; private set; } + public Optional Message { get; private set; } + public ISocketMessageChannel Channel { get; private set; } public Emoji Emoji { get; private set; } } }