Help part 2
This commit is contained in:
@@ -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`");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ using Discord.Addons.Interactive;
|
||||
namespace EventBot.Modules
|
||||
{
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[Name("Event")]
|
||||
public class EventModule : ModuleBase<SocketCommandContext>
|
||||
{
|
||||
private readonly EventManagementService _events;
|
||||
@@ -55,6 +56,7 @@ namespace EventBot.Modules
|
||||
[RequireUserPermission(GuildPermission.Administrator, Group = "Permission")]
|
||||
[RequireOwner(Group = "Permission")]
|
||||
[Group("event")]
|
||||
[Name("Event management")]
|
||||
public class EventManagementModule : InteractiveBase<SocketCommandContext>
|
||||
{
|
||||
private readonly EventManagementService _events;
|
||||
|
Reference in New Issue
Block a user