using Humanizer; using Myriad.Types; using PluralKit.Core; namespace PluralKit.Bot; public partial class CommandTree { private async Task PrintCommandNotFoundError(Context ctx, params Command[] potentialCommands) { var commandListStr = CreatePotentialCommandList(potentialCommands); await ctx.Reply( $"{Emojis.Error} Unknown command `pk;{ctx.FullCommand().Truncate(100)}`. Perhaps you meant to use one of the following commands?\n{commandListStr}\n\nFor a full list of possible commands, see ."); } private async Task PrintCommandExpectedError(Context ctx, params Command[] potentialCommands) { var commandListStr = CreatePotentialCommandList(potentialCommands); await ctx.Reply( $"{Emojis.Error} You need to pass a command. Perhaps you meant to use one of the following commands?\n{commandListStr}\n\nFor a full list of possible commands, see ."); } private static string CreatePotentialCommandList(params Command[] potentialCommands) { 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}:", embed: new Embed() { Description = $"{str}\nFor a full list of possible commands, see .", Color = DiscordUtils.Blue, } ); } private async Task CreateSystemNotFoundError(Context ctx) { var input = ctx.PopArgument(); if (input.TryParseMention(out var id)) { // Try to resolve the user ID to find the associated account, // so we can print their username. var user = await ctx.Rest.GetUser(id); if (user != null) return $"Account **{user.Username}#{user.Discriminator}** does not have a system registered."; return $"Account with ID `{id}` not found."; } return $"System with ID {input.AsCode()} not found."; } }