diff --git a/src/Discord.Net/Utilities/MentionUtils.cs b/src/Discord.Net/Utilities/MentionUtils.cs index b089bc753..0c4118f06 100644 --- a/src/Discord.Net/Utilities/MentionUtils.cs +++ b/src/Discord.Net/Utilities/MentionUtils.cs @@ -89,7 +89,7 @@ namespace Discord return false; } - internal static ImmutableArray GetUserMentions(string text, IMessageChannel channel, IReadOnlyCollection fallbackUsers) + internal static ImmutableArray GetUserMentions(string text, IMessageChannel channel, IReadOnlyCollection mentionedUsers) { var matches = _userRegex.Matches(text); var builder = ImmutableArray.CreateBuilder(matches.Count); @@ -99,17 +99,17 @@ namespace Discord if (ulong.TryParse(match.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id)) { IUser user = null; - if (channel.IsAttached) //Waiting this sync is safe because it's using a cache - user = channel.GetUserAsync(id).GetAwaiter().GetResult() as IUser; - if (user == null) + + //Verify this user was actually mentioned + foreach (var userMention in mentionedUsers) { - foreach (var fallbackUser in fallbackUsers) + if (userMention.Id == id) { - if (fallbackUser.Id == id) - { - user = fallbackUser; - break; - } + if (channel.IsAttached) //Waiting this sync is safe because it's using a cache + user = channel.GetUserAsync(id).GetAwaiter().GetResult() as IUser; + if (user == null) //User not found, fallback to basic mention info + user = userMention; + break; } }