Improve in-bot command documentation

Adds command descriptions, changes formatting on
command listings, and adds more direct command
listing commands.
This commit is contained in:
Ske 2019-11-03 00:29:11 +01:00
parent 53124776d4
commit 0226e73d88
2 changed files with 67 additions and 63 deletions

View File

@ -9,47 +9,57 @@ namespace PluralKit.Bot.Commands
{
public class CommandTree
{
public static Command SystemInfo = new Command("system", "system [system]", "uwu");
public static Command SystemNew = new Command("system new", "system new [name]", "uwu");
public static Command SystemRename = new Command("system name", "system rename [name]", "uwu");
public static Command SystemDesc = new Command("system description", "system description [description]", "uwu");
public static Command SystemTag = new Command("system tag", "system tag [tag]", "uwu");
public static Command SystemAvatar = new Command("system avatar", "system avatar [url|@mention]", "uwu");
public static Command SystemDelete = new Command("system delete", "system delete", "uwu");
public static Command SystemTimezone = new Command("system timezone", "system timezone [timezone]", "uwu");
public static Command SystemList = new Command("system list", "system list [full]", "uwu");
public static Command SystemFronter = new Command("system fronter", "system fronter", "uwu");
public static Command SystemFrontHistory = new Command("system fronthistory", "system fronthistory", "uwu");
public static Command SystemFrontPercent = new Command("system frontpercent", "system frontpercent [timespan]", "uwu");
public static Command MemberInfo = new Command("member", "member <member>", "uwu");
public static Command MemberNew = new Command("member new", "member new <name>", "uwu");
public static Command MemberRename = new Command("member rename", "member <member> rename <new name>", "uwu");
public static Command MemberDesc = new Command("member description", "member <member> description [description]", "uwu");
public static Command MemberPronouns = new Command("member pronouns", "member <member> pronouns [pronouns]", "uwu");
public static Command MemberColor = new Command("member color", "member <member> color [color]", "uwu");
public static Command MemberBirthday = new Command("member birthday", "member <member> birthday [birthday]", "uwu");
public static Command MemberProxy = new Command("member proxy", "member <member> proxy [add|remove] [example proxy]", "uwu");
public static Command MemberDelete = new Command("member delete", "member <member> delete", "uwu");
public static Command MemberAvatar = new Command("member avatar", "member <member> avatar [url|@mention]", "uwu");
public static Command MemberDisplayName = new Command("member displayname", "member <member> displayname [display name]", "uwu");
public static Command MemberKeepProxy = new Command("member keepproxy", "member <member> keepproxy [on|off]", "uwu");
public static Command Switch = new Command("switch", "switch <member> [member 2] [member 3...]", "uwu");
public static Command SwitchOut = new Command("switch out", "switch out", "uwu");
public static Command SwitchMove = new Command("switch move", "switch move <date/time>", "uwu");
public static Command SwitchDelete = new Command("switch delete", "switch delete", "uwu");
public static Command Link = new Command("link", "link <account>", "uwu");
public static Command Unlink = new Command("unlink", "unlink [account]", "uwu");
public static Command TokenGet = new Command("token", "token", "uwu");
public static Command TokenRefresh = new Command("token refresh", "token refresh", "uwu");
public static Command Import = new Command("import", "import [fileurl]", "uwu");
public static Command Export = new Command("export", "export", "uwu");
public static Command HelpCommandList = new Command("commands", "commands", "uwu");
public static Command HelpProxy = new Command("help proxy", "help proxy", "uwu");
public static Command Help = new Command("help", "help", "uwu");
public static Command Message = new Command("message", "message <id|link>", "uwu");
public static Command Log = new Command("log", "log <channel>", "uwu");
public static Command Invite = new Command("invite", "invite", "uwu");
public static Command PermCheck = new Command("permcheck", "permcheck <guild>", "uwu");
public static Command SystemInfo = new Command("system", "system [system]", "Looks up information about a system");
public static Command SystemNew = new Command("system new", "system new [name]", "Creates a new system");
public static Command SystemRename = new Command("system name", "system rename [name]", "Renames your system");
public static Command SystemDesc = new Command("system description", "system description [description]", "Changes your system's description");
public static Command SystemTag = new Command("system tag", "system tag [tag]", "Changes your system's tag");
public static Command SystemAvatar = new Command("system avatar", "system avatar [url|@mention]", "Changes your system's avatar");
public static Command SystemDelete = new Command("system delete", "system delete", "Deletes your system");
public static Command SystemTimezone = new Command("system timezone", "system timezone [timezone]", "Changes your system's time zone");
public static Command SystemList = new Command("system list", "system [system] list [full]", "Lists a system's members");
public static Command SystemFronter = new Command("system fronter", "system [system] fronter", "Shows a system's fronter(s)");
public static Command SystemFrontHistory = new Command("system fronthistory", "system [system] fronthistory", "Shows a system's front history");
public static Command SystemFrontPercent = new Command("system frontpercent", "system [system] frontpercent [timespan]", "Shows a system's front breakdown");
public static Command MemberInfo = new Command("member", "member <member>", "Looks up information about a member");
public static Command MemberNew = new Command("member new", "member new <name>", "Creates a new member");
public static Command MemberRename = new Command("member rename", "member <member> rename <new name>", "Renames a member");
public static Command MemberDesc = new Command("member description", "member <member> description [description]", "Changes a member's description");
public static Command MemberPronouns = new Command("member pronouns", "member <member> pronouns [pronouns]", "Changes a member's pronouns");
public static Command MemberColor = new Command("member color", "member <member> color [color]", "Changes a member's color");
public static Command MemberBirthday = new Command("member birthday", "member <member> birthday [birthday]", "Changes a member's birthday");
public static Command MemberProxy = new Command("member proxy", "member <member> proxy [add|remove] [example proxy]", "Changes, adds, or removes a member's proxy tags");
public static Command MemberDelete = new Command("member delete", "member <member> delete", "Deletes a member");
public static Command MemberAvatar = new Command("member avatar", "member <member> avatar [url|@mention]", "Changes a member's avatar");
public static Command MemberDisplayName = new Command("member displayname", "member <member> displayname [display name]", "Changes a member's display name");
public static Command MemberKeepProxy = new Command("member keepproxy", "member <member> keepproxy [on|off]", "Sets whether to include a member's proxy tags when proxying");
public static Command Switch = new Command("switch", "switch <member> [member 2] [member 3...]", "Registers a switch");
public static Command SwitchOut = new Command("switch out", "switch out", "Registers a switch with no members");
public static Command SwitchMove = new Command("switch move", "switch move <date/time>", "Moves the latest switch in time");
public static Command SwitchDelete = new Command("switch delete", "switch delete [all]", "Deletes the latest switch (or them all)");
public static Command Link = new Command("link", "link <account>", "Links your system to another account");
public static Command Unlink = new Command("unlink", "unlink [account]", "Unlinks your system from an account");
public static Command TokenGet = new Command("token", "token", "Gets your system's API token");
public static Command TokenRefresh = new Command("token refresh", "token refresh", "Resets your system's API token");
public static Command Import = new Command("import", "import [fileurl]", "Imports system information from a data file");
public static Command Export = new Command("export", "export", "Exports system information to a data file");
public static Command Help = new Command("help", "help", "Shows help information about PluralKit");
public static Command Message = new Command("message", "message <id|link>", "Looks up a proxied message");
public static Command Log = new Command("log", "log <channel>", "Designates a channel to post proxied messages to");
public static Command Invite = new Command("invite", "invite", "Gets a link to invite PluralKit to other servers");
public static Command PermCheck = new Command("permcheck", "permcheck <guild>", "Checks whether a server's permission setup is correct");
public static Command[] SystemCommands = {
SystemInfo, SystemNew, SystemRename, SystemTag, SystemDesc, SystemAvatar, SystemDelete, SystemTimezone,
SystemList, SystemFronter, SystemFrontHistory, SystemFrontPercent
};
public static Command[] MemberCommands = {
MemberInfo, MemberNew, MemberRename, MemberDisplayName, MemberDesc, MemberPronouns, MemberColor,
MemberBirthday, MemberProxy, MemberKeepProxy, MemberDelete, MemberAvatar,
};
public static Command[] SwitchCommands = {Switch, SwitchOut, SwitchMove, SwitchDelete};
private IDiscordClient _client;
@ -81,12 +91,12 @@ namespace PluralKit.Bot.Commands
return ctx.Execute<ImportExportCommands>(Export, m => m.Export(ctx));
if (ctx.Match("help"))
if (ctx.Match("commands"))
return ctx.Execute<HelpCommands>(HelpCommandList, m => m.CommandList(ctx));
return ctx.Reply("For the list of commands, see the website: <https://pluralkit.me/commands>");
else if (ctx.Match("proxy"))
return ctx.Execute<HelpCommands>(HelpProxy, m => m.HelpProxy(ctx));
return ctx.Reply("The proxy help page has been moved! See the website: https://pluralkit.me/guide#proxying");
else return ctx.Execute<HelpCommands>(Help, m => m.HelpRoot(ctx));
if (ctx.Match("commands"))
return ctx.Execute<HelpCommands>(HelpCommandList, m => m.CommandList(ctx));
return ctx.Reply("For the list of commands, see the website: <https://pluralkit.me/commands>");
if (ctx.Match("message", "msg"))
return ctx.Execute<ModCommands>(Message, m => m.GetMessage(ctx));
if (ctx.Match("log"))
@ -148,6 +158,8 @@ namespace PluralKit.Bot.Commands
await ctx.Execute<SystemCommands>(SystemFrontHistory, m => m.SystemFrontHistory(ctx, ctx.System));
else if (ctx.Match("fp", "frontpercent", "front%", "frontbreakdown"))
await ctx.Execute<SystemCommands>(SystemFrontPercent, m => m.SystemFrontPercent(ctx, ctx.System));
else if (ctx.Match("commands", "help"))
await PrintCommandList(ctx, "systems", SystemCommands);
else if (!ctx.HasNext()) // Bare command
await ctx.Execute<SystemCommands>(SystemInfo, m => m.Query(ctx, ctx.System));
else
@ -197,6 +209,8 @@ namespace PluralKit.Bot.Commands
{
if (ctx.Match("new", "n", "add", "create", "register"))
await ctx.Execute<MemberCommands>(MemberNew, m => m.NewMember(ctx));
else if (ctx.Match("commands", "help"))
await PrintCommandList(ctx, "members", MemberCommands);
else if (await ctx.MatchMember() is PKMember target)
await HandleMemberCommandTargeted(ctx, target);
else if (!ctx.HasNext())
@ -243,6 +257,8 @@ namespace PluralKit.Bot.Commands
await ctx.Execute<SwitchCommands>(SwitchMove, m => m.SwitchMove(ctx));
else if (ctx.Match("delete", "remove", "erase", "cancel", "yeet"))
await ctx.Execute<SwitchCommands>(SwitchDelete, m => m.SwitchDelete(ctx));
else if (ctx.Match("commands", "help"))
await PrintCommandList(ctx, "switching", SwitchCommands);
else if (ctx.HasNext()) // there are following arguments
await ctx.Execute<SwitchCommands>(Switch, m => m.Switch(ctx));
else
@ -265,7 +281,13 @@ namespace PluralKit.Bot.Commands
private static string CreatePotentialCommandList(params Command[] potentialCommands)
{
return string.Join("\n", potentialCommands.Select(cmd => $"- `pk;{cmd.Usage}`"));
return string.Join("\n", potentialCommands.Select(cmd => $"- **pk;{cmd.Usage}** - *{cmd.Description}*"));
}
private async Task PrintCommandList(Context ctx, string subject, params Command[] commands)
{
var str = CreatePotentialCommandList(commands);
await ctx.Reply($"Here is a list of commands related to {subject}: \n{str}\nFor a full list of possible commands, see <https://pluralkit.me/commands>.");
}
private async Task<string> CreateSystemNotFoundError(Context ctx)

View File

@ -7,18 +7,6 @@ namespace PluralKit.Bot.Commands
{
public class HelpCommands
{
public async Task HelpProxy(Context ctx)
{
await ctx.Reply(
"The proxy help page has been moved! See the website: https://pluralkit.me/guide#proxying");
}
public async Task HelpMember(Context ctx)
{
await ctx.Reply(
"The member help page has been moved! See the website: https://pluralkit.me/guide#member-management");
}
public async Task HelpRoot(Context ctx)
{
await ctx.Reply(embed: new EmbedBuilder()
@ -34,11 +22,5 @@ namespace PluralKit.Bot.Commands
.WithColor(Color.Blue)
.Build());
}
public async Task CommandList(Context ctx)
{
await ctx.Reply(
"The command list has been moved! See the website: https://pluralkit.me/commands");
}
}
}