diff --git a/PluralKit.Bot/Commands/CommandTree.cs b/PluralKit.Bot/Commands/CommandTree.cs index 0674f2c9..564f0c40 100644 --- a/PluralKit.Bot/Commands/CommandTree.cs +++ b/PluralKit.Bot/Commands/CommandTree.cs @@ -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 ", "uwu"); - public static Command MemberNew = new Command("member new", "member new ", "uwu"); - public static Command MemberRename = new Command("member rename", "member rename ", "uwu"); - public static Command MemberDesc = new Command("member description", "member description [description]", "uwu"); - public static Command MemberPronouns = new Command("member pronouns", "member pronouns [pronouns]", "uwu"); - public static Command MemberColor = new Command("member color", "member color [color]", "uwu"); - public static Command MemberBirthday = new Command("member birthday", "member birthday [birthday]", "uwu"); - public static Command MemberProxy = new Command("member proxy", "member proxy [add|remove] [example proxy]", "uwu"); - public static Command MemberDelete = new Command("member delete", "member delete", "uwu"); - public static Command MemberAvatar = new Command("member avatar", "member avatar [url|@mention]", "uwu"); - public static Command MemberDisplayName = new Command("member displayname", "member displayname [display name]", "uwu"); - public static Command MemberKeepProxy = new Command("member keepproxy", "member keepproxy [on|off]", "uwu"); - public static Command Switch = new Command("switch", "switch [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 ", "uwu"); - public static Command SwitchDelete = new Command("switch delete", "switch delete", "uwu"); - public static Command Link = new Command("link", "link ", "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 ", "uwu"); - public static Command Log = new Command("log", "log ", "uwu"); - public static Command Invite = new Command("invite", "invite", "uwu"); - public static Command PermCheck = new Command("permcheck", "permcheck ", "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 ", "Looks up information about a member"); + public static Command MemberNew = new Command("member new", "member new ", "Creates a new member"); + public static Command MemberRename = new Command("member rename", "member rename ", "Renames a member"); + public static Command MemberDesc = new Command("member description", "member description [description]", "Changes a member's description"); + public static Command MemberPronouns = new Command("member pronouns", "member pronouns [pronouns]", "Changes a member's pronouns"); + public static Command MemberColor = new Command("member color", "member color [color]", "Changes a member's color"); + public static Command MemberBirthday = new Command("member birthday", "member birthday [birthday]", "Changes a member's birthday"); + public static Command MemberProxy = new Command("member proxy", "member proxy [add|remove] [example proxy]", "Changes, adds, or removes a member's proxy tags"); + public static Command MemberDelete = new Command("member delete", "member delete", "Deletes a member"); + public static Command MemberAvatar = new Command("member avatar", "member avatar [url|@mention]", "Changes a member's avatar"); + public static Command MemberDisplayName = new Command("member displayname", "member displayname [display name]", "Changes a member's display name"); + public static Command MemberKeepProxy = new Command("member keepproxy", "member keepproxy [on|off]", "Sets whether to include a member's proxy tags when proxying"); + public static Command Switch = new Command("switch", "switch [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 ", "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 ", "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 ", "Looks up a proxied message"); + public static Command Log = new Command("log", "log ", "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 ", "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(Export, m => m.Export(ctx)); if (ctx.Match("help")) if (ctx.Match("commands")) - return ctx.Execute(HelpCommandList, m => m.CommandList(ctx)); + return ctx.Reply("For the list of commands, see the website: "); else if (ctx.Match("proxy")) - return ctx.Execute(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(Help, m => m.HelpRoot(ctx)); if (ctx.Match("commands")) - return ctx.Execute(HelpCommandList, m => m.CommandList(ctx)); + return ctx.Reply("For the list of commands, see the website: "); if (ctx.Match("message", "msg")) return ctx.Execute(Message, m => m.GetMessage(ctx)); if (ctx.Match("log")) @@ -148,6 +158,8 @@ namespace PluralKit.Bot.Commands await ctx.Execute(SystemFrontHistory, m => m.SystemFrontHistory(ctx, ctx.System)); else if (ctx.Match("fp", "frontpercent", "front%", "frontbreakdown")) await ctx.Execute(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(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(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(SwitchMove, m => m.SwitchMove(ctx)); else if (ctx.Match("delete", "remove", "erase", "cancel", "yeet")) await ctx.Execute(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(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 ."); } private async Task CreateSystemNotFoundError(Context ctx) diff --git a/PluralKit.Bot/Commands/HelpCommands.cs b/PluralKit.Bot/Commands/HelpCommands.cs index 98dd712c..0ee047a2 100644 --- a/PluralKit.Bot/Commands/HelpCommands.cs +++ b/PluralKit.Bot/Commands/HelpCommands.cs @@ -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"); - } } } \ No newline at end of file