|
@@ -89,7 +89,7 @@ namespace Discord |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
internal static ImmutableArray<IUser> GetUserMentions(string text, IMessageChannel channel, IReadOnlyCollection<IUser> fallbackUsers) |
|
|
|
|
|
|
|
|
internal static ImmutableArray<IUser> GetUserMentions(string text, IMessageChannel channel, IReadOnlyCollection<IUser> mentionedUsers) |
|
|
{ |
|
|
{ |
|
|
var matches = _userRegex.Matches(text); |
|
|
var matches = _userRegex.Matches(text); |
|
|
var builder = ImmutableArray.CreateBuilder<IUser>(matches.Count); |
|
|
var builder = ImmutableArray.CreateBuilder<IUser>(matches.Count); |
|
@@ -99,17 +99,17 @@ namespace Discord |
|
|
if (ulong.TryParse(match.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id)) |
|
|
if (ulong.TryParse(match.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id)) |
|
|
{ |
|
|
{ |
|
|
IUser user = null; |
|
|
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; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|