Browse Source

Added MentionUtils.TryParseXXX methods

tags/1.0-rc
RogueException 9 years ago
parent
commit
d934a5a1eb
1 changed files with 40 additions and 15 deletions
  1. +40
    -15
      src/Discord.Net/Utilities/MentionUtils.cs

+ 40
- 15
src/Discord.Net/Utilities/MentionUtils.cs View File

@@ -19,6 +19,14 @@ namespace Discord

/// <summary> Parses a provided user mention string. </summary>
public static ulong ParseUser(string mentionText)
{
ulong id;
if (TryParseUser(mentionText, out id))
return id;
throw new ArgumentException("Invalid mention format", nameof(mentionText));
}
/// <summary> Tries to parse a provided user mention string. </summary>
public static bool TryParseUser(string mentionText, out ulong userId)
{
mentionText = mentionText.Trim();
if (mentionText.Length >= 3 && mentionText[0] == '<' && mentionText[1] == '@' && mentionText[mentionText.Length - 1] == '>')
@@ -27,40 +35,57 @@ namespace Discord
mentionText = mentionText.Substring(3, mentionText.Length - 4); //<@!123>
else
mentionText = mentionText.Substring(2, mentionText.Length - 3); //<@123>

ulong id;
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out id))
return id;
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out userId))
return true;
}
throw new ArgumentException("Invalid mention format", nameof(mentionText));
userId = 0;
return false;
}

/// <summary> Parses a provided channel mention string. </summary>
public static ulong ParseChannel(string mentionText)
{
ulong id;
if (TryParseChannel(mentionText, out id))
return id;
throw new ArgumentException("Invalid mention format", nameof(mentionText));
}
/// <summary>Tries to parse a provided channel mention string. </summary>
public static bool TryParseChannel(string mentionText, out ulong channelId)
{
mentionText = mentionText.Trim();
if (mentionText.Length >= 3 && mentionText[0] == '<' && mentionText[1] == '#' && mentionText[mentionText.Length - 1] == '>')
{
mentionText = mentionText.Substring(2, mentionText.Length - 3); //<#123>

ulong id;
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out id))
return id;
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out channelId))
return true;
}
throw new ArgumentException("Invalid mention format", nameof(mentionText));
channelId = 0;
return false;
}
/// <summary> Parses a provided role mention string. </summary>
public static ulong ParseRole(string mentionText)
{
ulong id;
if (TryParseRole(mentionText, out id))
return id;
throw new ArgumentException("Invalid mention format", nameof(mentionText));
}
/// <summary>Tries to parse a provided role mention string. </summary>
public static bool TryParseRole(string mentionText, out ulong roleId)
{
mentionText = mentionText.Trim();
if (mentionText.Length >= 4 && mentionText[0] == '<' && mentionText[1] == '@' && mentionText[2] == '&' && mentionText[mentionText.Length - 1] == '>')
{
mentionText = mentionText.Substring(3, mentionText.Length - 4); //<@&123>

ulong id;
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out id))
return id;
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out roleId))
return true;
}
throw new ArgumentException("Invalid mention format", nameof(mentionText));
roleId = 0;
return false;
}

/// <summary> Gets the ids of all users mentioned in a provided text.</summary>


Loading…
Cancel
Save