Browse Source

Support nickname mentions in FindUsers

pull/57/head
RogueException 9 years ago
parent
commit
64d4b0af32
1 changed files with 17 additions and 7 deletions
  1. +17
    -7
      src/Discord.Net/InternalExtensions.cs

+ 17
- 7
src/Discord.Net/InternalExtensions.cs View File

@@ -10,19 +10,19 @@ namespace Discord
{
internal static class InternalExtensions
{
internal static readonly IFormatProvider _format = CultureInfo.InvariantCulture;
public static ulong ToId(this string value) => ulong.Parse(value, NumberStyles.None, _format);
public static ulong? ToNullableId(this string value) => value == null ? (ulong?)null : ulong.Parse(value, NumberStyles.None, _format);
internal static readonly IFormatProvider _format = CultureInfo.InvariantCulture;
public static ulong ToId(this string value) => ulong.Parse(value, NumberStyles.None, _format);
public static ulong? ToNullableId(this string value) => value == null ? (ulong?)null : ulong.Parse(value, NumberStyles.None, _format);
public static bool TryToId(this string value, out ulong result) => ulong.TryParse(value, NumberStyles.None, _format, out result);

public static string ToIdString(this ulong value) => value.ToString(_format);
public static string ToIdString(this ulong? value) => value?.ToString(_format);
public static string ToIdString(this ulong? value) => value?.ToString(_format);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool HasBit(this uint rawValue, byte bit) => ((rawValue >> bit) & 1U) == 1;

public static bool TryGetOrAdd<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> d,
public static bool TryGetOrAdd<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> d,
TKey key, Func<TKey, TValue> factory, out TValue result)
{
bool created = false;
@@ -98,6 +98,16 @@ namespace Discord

if (!exactMatch)
{
if (name.Length >= 3 && name[0] == '<' && name[1] == '@' && name[2] == '!' && name[name.Length - 1] == '>') //Search by nickname'd mention
{
ulong id;
if (name.Substring(3, name.Length - 4).TryToId(out id))
{
var user = users.Where(x => x.Id == id).FirstOrDefault();
if (user != null)
query = query.Concat(new User[] { user });
}
}
if (name.Length >= 2 && name[0] == '<' && name[1] == '@' && name[name.Length - 1] == '>') //Search by raw mention
{
ulong id;


Loading…
Cancel
Save