diff --git a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
index 73d402041..f238ca6bc 100644
--- a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
+++ b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
@@ -14,7 +14,7 @@ namespace Discord
Task UnpinAsync(RequestOptions options = null);
/// Returns all reactions included in this message.
- IReadOnlyDictionary Reactions { get; }
+ IReadOnlyDictionary Reactions { get; }
/// Adds a reaction to this message.
Task AddReactionAsync(Emoji emoji, RequestOptions options = null);
diff --git a/src/Discord.Net.Core/Entities/Messages/ReactionMetadata.cs b/src/Discord.Net.Core/Entities/Messages/ReactionMetadata.cs
new file mode 100644
index 000000000..005276202
--- /dev/null
+++ b/src/Discord.Net.Core/Entities/Messages/ReactionMetadata.cs
@@ -0,0 +1,11 @@
+namespace Discord
+{
+ public struct ReactionMetadata
+ {
+ /// Gets the number of reactions
+ public int ReactionCount { get; internal set; }
+
+ /// Returns true if the current user has used this reaction
+ public bool IsMe { get; internal set; }
+ }
+}
diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs
index ee806dbc1..a9197188e 100644
--- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs
+++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs
@@ -29,7 +29,7 @@ namespace Discord.Rest
public override IReadOnlyCollection MentionedRoleIds => MessageHelper.FilterTagsByKey(TagType.RoleMention, _tags);
public override IReadOnlyCollection MentionedUsers => MessageHelper.FilterTagsByValue(TagType.UserMention, _tags);
public override IReadOnlyCollection Tags => _tags;
- public IReadOnlyDictionary Reactions => _reactions.ToDictionary(x => x.Emoji, x => x.Count);
+ public IReadOnlyDictionary Reactions => _reactions.ToDictionary(x => x.Emoji, x => new ReactionMetadata { ReactionCount = x.Count, IsMe = x.Me });
internal RestUserMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author)
: base(discord, id, channel, author)
diff --git a/src/Discord.Net.Rpc/Entities/Messages/RpcUserMessage.cs b/src/Discord.Net.Rpc/Entities/Messages/RpcUserMessage.cs
index 240290fab..23d277dd9 100644
--- a/src/Discord.Net.Rpc/Entities/Messages/RpcUserMessage.cs
+++ b/src/Discord.Net.Rpc/Entities/Messages/RpcUserMessage.cs
@@ -29,7 +29,7 @@ namespace Discord.Rpc
public override IReadOnlyCollection MentionedRoleIds => MessageHelper.FilterTagsByKey(TagType.RoleMention, _tags);
public override IReadOnlyCollection MentionedUserIds => MessageHelper.FilterTagsByKey(TagType.UserMention, _tags);
public override IReadOnlyCollection Tags => _tags;
- public IReadOnlyDictionary Reactions => ImmutableDictionary.Create();
+ public IReadOnlyDictionary Reactions => ImmutableDictionary.Create();
internal RpcUserMessage(DiscordRpcClient discord, ulong id, RestVirtualMessageChannel channel, RpcUser author)
: base(discord, id, channel, author)
diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs
index e1a6853e2..93085234e 100644
--- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs
+++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs
@@ -30,7 +30,7 @@ namespace Discord.WebSocket
public override IReadOnlyCollection MentionedChannels => MessageHelper.FilterTagsByValue(TagType.ChannelMention, _tags);
public override IReadOnlyCollection MentionedRoles => MessageHelper.FilterTagsByValue(TagType.RoleMention, _tags);
public override IReadOnlyCollection MentionedUsers => MessageHelper.FilterTagsByValue(TagType.UserMention, _tags);
- public IReadOnlyDictionary Reactions => _reactions.GroupBy(r => r.Emoji).ToDictionary(x => x.Key, x => x.Count());
+ public IReadOnlyDictionary Reactions => _reactions.GroupBy(r => r.Emoji).ToDictionary(x => x.Key, x => new ReactionMetadata { ReactionCount = x.Count(), IsMe = x.Any(y => y.UserId == Discord.CurrentUser.Id) });
internal SocketUserMessage(DiscordSocketClient discord, ulong id, ISocketMessageChannel channel, SocketUser author)
: base(discord, id, channel, author)