Exemple #1
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            StringBuilder        retVal         = new StringBuilder();
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            string[]      commandParams = command.CommandParams;
            Command[]     commands      = commandController.GetCommandsForLanguage(senderDetail.ServerSettings.Language);
            Discord.Color responseColor = Discord.Color.Green;

            if (string.IsNullOrWhiteSpace(command.CommandDetail))
            {
                var commandsByModule = commands.GroupBy(x => x.Module).ToDictionary(grouping => grouping.Key, grouping => grouping.ToList());
                foreach (var pair in commandsByModule)
                {
                    retVal.Append("**");
                    retVal.Append(pair.Key.ToString());
                    retVal.AppendLine("**");
                    retVal.AppendLine(string.Join(", ", pair.Value.Select(c => c.Aliases[0])));
                    retVal.AppendLine();
                }
            }
            else
            {
                string  search = command.CommandArgs.First().ToLowerInvariant();
                Command found  = commands.FirstOrDefault(c => c.Aliases.Contains(search, StringComparer.OrdinalIgnoreCase));
                if (found != null)
                {
                    retVal.AppendLine(found.Help + "\r\n" + found.Examples);
                }
                else
                {
                    retVal.AppendLine($"{Emojis.QuestionSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_IncorrectParameter")}");
                    responseColor = Discord.Color.Red;
                }
            }

            string   message  = retVal.ToString();
            Response response = new Response
            {
                Embed        = Utility.EmbedUtility.ToEmbed(message, responseColor),
                Message      = message,
                ResponseType = ResponseType.Default
            };

            return(new[] { response });
        }