Help part 2

This commit is contained in:
Karolis2011
2019-06-20 01:01:49 +03:00
parent ed5f4d729e
commit 8058bffba5
3 changed files with 62 additions and 4 deletions

View File

@@ -73,7 +73,8 @@ namespace EventBot.Modules
var pagedCommands = _commands.Commands
.OrderBy(c => c.Aliases[0])
.Where(c => c.Attributes
.Select(a => {
.Select(a =>
{
switch (a)
{
case NoHelpAttribute _:
@@ -85,7 +86,7 @@ namespace EventBot.Modules
}
})
.Aggregate(true, (a, r) => a && r))
.SelectMany(c => c.Aliases.Select(a => new { CI = c, MA = (c.Aliases[0] == a), A = a}).Reverse())
.SelectMany(c => c.Aliases.Select(a => new { CI = c, MA = (c.Aliases[0] == a), A = a }).Reverse())
.Select((e, i) => new { Command = e, Index = i })
.GroupBy(o => o.Index / 20)
.Select(g => g.Select(o => o.Command));
@@ -94,7 +95,8 @@ namespace EventBot.Modules
{
Title = "Command list",
Color = Color.DarkBlue,
Pages = pagedCommands.Select(p => string.Join("\r\n", p.Select(c => {
Pages = pagedCommands.Select(p => string.Join("\r\n", p.Select(c =>
{
if (c.MA)
return $"`{c.CI.FormatCallHelpString()}` - **{c.CI.Name}**";
else
@@ -108,6 +110,45 @@ namespace EventBot.Modules
};
await PagedReplyAsync(pager);
}
[Command]
[Name("Help")]
[Summary("Shows detailed info about command.")]
public async Task DefaultHelpAsync([Summary("Command ")][Remainder] string commandAlias)
{
var command = _commands.Commands.Where(c => c.Aliases.Contains(commandAlias)).FirstOrDefault();
if (command == null)
throw new Exception("This command was not found.");
var embed = new EmbedBuilder()
.WithTitle(command.Name)
.WithDescription(command.Summary)
.WithColor(Color.DarkTeal);
embed.AddField("Module", command.Module.Name, true);
if (command.Aliases.Count > 1)
embed.AddField("Aliases", string.Join(", ", command.Aliases));
if(command.Parameters.Count > 0)
embed.AddField("Parameters",
string.Join("\r\n", command.Parameters.Select(p => $"`{p.FormatParameter()}` *(Type: {p.FormatParameterType()})* - **{p.Summary}** {(p.IsRemainder ? "_No quotes are needed, when providing this parameter._" : "")}" ))
);
await ReplyAsync($"I got this information about command `{commandAlias}`:", embed: embed.Build());
}
[Command("types")]
[Name("Type help")]
[Priority(1)]
[Summary("Shows information about avaivable types for command paramters.")]
[NoHelp]
public async Task TypeHelp()
{
await ReplyAsync($"There are following avaivable types for command input: \r\n" +
$"***String*** - The most basic text input, must be qouted if there is space inside. Ex: `\"This is a string\"`; `ThisCanBeUsedAlsoAsString`\r\n" +
$"***Number*** - Just a simple number. Ex: `1`; `-2`; `1523`\r\n" +
$"***User*** - Mention or ID of user. Ex: `360710685186850826`; `Skull132#1984`; {Context.Client.CurrentUser.Mention}\r\n" +
$"***Event*** - ID of event. Just positive numbers 🙂.\r\n" +
$"***EventRole*** - ID of event's role. Also positive numbers 😊.\r\n" +
$"***EventParticipactionType*** - What type you want. Ex: `Quick`; `Detailed`");
}
}
}
}