Added MentionUtils.TryParseXXX methods
This commit is contained in:
@@ -19,6 +19,14 @@ namespace Discord
|
|||||||
|
|
||||||
/// <summary> Parses a provided user mention string. </summary>
|
/// <summary> Parses a provided user mention string. </summary>
|
||||||
public static ulong ParseUser(string mentionText)
|
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();
|
mentionText = mentionText.Trim();
|
||||||
if (mentionText.Length >= 3 && mentionText[0] == '<' && mentionText[1] == '@' && mentionText[mentionText.Length - 1] == '>')
|
if (mentionText.Length >= 3 && mentionText[0] == '<' && mentionText[1] == '@' && mentionText[mentionText.Length - 1] == '>')
|
||||||
@@ -28,39 +36,56 @@ namespace Discord
|
|||||||
else
|
else
|
||||||
mentionText = mentionText.Substring(2, mentionText.Length - 3); //<@123>
|
mentionText = mentionText.Substring(2, mentionText.Length - 3); //<@123>
|
||||||
|
|
||||||
ulong id;
|
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out userId))
|
||||||
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out id))
|
return true;
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
throw new ArgumentException("Invalid mention format", nameof(mentionText));
|
userId = 0;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Parses a provided channel mention string. </summary>
|
/// <summary> Parses a provided channel mention string. </summary>
|
||||||
public static ulong ParseChannel(string mentionText)
|
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();
|
mentionText = mentionText.Trim();
|
||||||
if (mentionText.Length >= 3 && mentionText[0] == '<' && mentionText[1] == '#' && mentionText[mentionText.Length - 1] == '>')
|
if (mentionText.Length >= 3 && mentionText[0] == '<' && mentionText[1] == '#' && mentionText[mentionText.Length - 1] == '>')
|
||||||
{
|
{
|
||||||
mentionText = mentionText.Substring(2, mentionText.Length - 3); //<#123>
|
mentionText = mentionText.Substring(2, mentionText.Length - 3); //<#123>
|
||||||
|
|
||||||
ulong id;
|
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out channelId))
|
||||||
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out id))
|
return true;
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
throw new ArgumentException("Invalid mention format", nameof(mentionText));
|
channelId = 0;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
/// <summary> Parses a provided role mention string. </summary>
|
/// <summary> Parses a provided role mention string. </summary>
|
||||||
public static ulong ParseRole(string mentionText)
|
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();
|
mentionText = mentionText.Trim();
|
||||||
if (mentionText.Length >= 4 && mentionText[0] == '<' && mentionText[1] == '@' && mentionText[2] == '&' && mentionText[mentionText.Length - 1] == '>')
|
if (mentionText.Length >= 4 && mentionText[0] == '<' && mentionText[1] == '@' && mentionText[2] == '&' && mentionText[mentionText.Length - 1] == '>')
|
||||||
{
|
{
|
||||||
mentionText = mentionText.Substring(3, mentionText.Length - 4); //<@&123>
|
mentionText = mentionText.Substring(3, mentionText.Length - 4); //<@&123>
|
||||||
|
|
||||||
ulong id;
|
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out roleId))
|
||||||
if (ulong.TryParse(mentionText, NumberStyles.None, CultureInfo.InvariantCulture, out id))
|
return true;
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
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>
|
/// <summary> Gets the ids of all users mentioned in a provided text.</summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user