2018-03-28 23:34:48 +00:00
|
|
|
|
using System;
|
2018-03-30 12:51:38 +00:00
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Discord;
|
2018-03-28 23:34:48 +00:00
|
|
|
|
|
|
|
|
|
namespace DeukBot4.MessageHandlers.CommandHandler.RequestStructure
|
|
|
|
|
{
|
|
|
|
|
public class RequestParameter
|
|
|
|
|
{
|
2018-03-31 16:05:54 +00:00
|
|
|
|
public ParameterMatcher.ParameterType Type { get; }
|
2018-03-28 23:34:48 +00:00
|
|
|
|
private readonly string _value;
|
|
|
|
|
|
2018-03-31 16:05:54 +00:00
|
|
|
|
public RequestParameter(string value, ParameterMatcher.ParameterType type)
|
2018-03-28 23:34:48 +00:00
|
|
|
|
{
|
2018-03-31 16:05:54 +00:00
|
|
|
|
Type = type;
|
2018-03-28 23:34:48 +00:00
|
|
|
|
_value = value;
|
|
|
|
|
}
|
|
|
|
|
|
2018-03-30 17:03:25 +00:00
|
|
|
|
public int? AsInt()
|
2018-03-28 23:34:48 +00:00
|
|
|
|
{
|
|
|
|
|
if (int.TryParse(_value, out var i))
|
|
|
|
|
{
|
|
|
|
|
return i;
|
|
|
|
|
}
|
2018-03-30 17:03:25 +00:00
|
|
|
|
return null;
|
2018-03-28 23:34:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string AsString()
|
|
|
|
|
{
|
|
|
|
|
return _value;
|
|
|
|
|
}
|
2018-03-29 19:57:16 +00:00
|
|
|
|
|
2018-03-30 17:03:25 +00:00
|
|
|
|
public ulong? AsUlong()
|
2018-03-29 19:57:16 +00:00
|
|
|
|
{
|
|
|
|
|
if (ulong.TryParse(_value, out var i))
|
|
|
|
|
{
|
|
|
|
|
return i;
|
|
|
|
|
}
|
2018-03-30 17:03:25 +00:00
|
|
|
|
return null;
|
2018-03-29 19:57:16 +00:00
|
|
|
|
}
|
2018-03-30 12:51:38 +00:00
|
|
|
|
|
2018-10-15 16:36:45 +00:00
|
|
|
|
public async Task<IGuildUser> AsDiscordGuildUser(IGuild guild)
|
2018-03-30 12:51:38 +00:00
|
|
|
|
{
|
|
|
|
|
if (ulong.TryParse(_value, out var i))
|
|
|
|
|
{
|
|
|
|
|
return await guild.GetUserAsync(i);
|
|
|
|
|
}
|
2018-10-09 15:28:06 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var t1 = DateTime.UtcNow;
|
|
|
|
|
var users = await guild.GetUsersAsync();
|
|
|
|
|
var user = users.FirstOrDefault(x =>
|
|
|
|
|
x.Username.IndexOf(_value, StringComparison.InvariantCultureIgnoreCase) != -1);
|
|
|
|
|
Logger.Main.LogWarning($"Finding user on server took {(DateTime.UtcNow - t1).TotalMilliseconds} ms");
|
|
|
|
|
return user;
|
|
|
|
|
}
|
2018-03-30 12:51:38 +00:00
|
|
|
|
}
|
2018-10-15 16:36:45 +00:00
|
|
|
|
|
|
|
|
|
public async Task<IUser> AsDiscordUser()
|
|
|
|
|
{
|
|
|
|
|
if (ulong.TryParse(_value, out var i))
|
|
|
|
|
{
|
|
|
|
|
return Program.Client.GetUser(i);
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2018-03-28 23:34:48 +00:00
|
|
|
|
}
|
|
|
|
|
}
|