geekbot/Geekbot.net/WebApi/Help/HelpController.cs

44 lines
1.5 KiB
C#
Raw Normal View History

using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Discord.Commands;
2018-04-30 23:44:19 +02:00
using Nancy;
namespace Geekbot.net.WebApi.Help
{
2018-05-14 00:41:05 +02:00
public sealed class HelpController : NancyModule
{
2018-05-14 00:41:05 +02:00
public HelpController(CommandService commands)
{
Get("/v1/commands", args =>
{
2018-04-30 23:44:19 +02:00
var commandList = (from cmd in commands.Commands
let cmdParamsObj = cmd.Parameters.Select(cmdParam => new CommandParamDto
{
Summary = cmdParam.Summary,
2018-04-30 23:44:19 +02:00
Default = cmdParam.DefaultValue?.ToString() ?? null,
Type = cmdParam.Type?.ToString()
})
.ToList()
let param = string.Join(", !", cmd.Aliases)
select new CommandDto
{
Name = cmd.Name,
Summary = cmd.Summary,
IsAdminCommand = (param.Contains("admin")),
Aliases = cmd.Aliases.ToArray(),
Params = cmdParamsObj
2018-04-30 23:44:19 +02:00
}).ToList();
return Response.AsJson(commandList);
});
}
2018-04-30 23:44:19 +02:00
private async Task<CommandService> GetCommands()
{
var commands = new CommandService();
await commands.AddModulesAsync(Assembly.GetEntryAssembly());
return commands;
}
}
}