예제 #1
0
        public async Task HelpMessage()
        {
            var assembly = Assembly.Load("Nayu");
            var methods  = assembly.GetTypes()
                           .SelectMany(t => t.GetMethods())
                           .Where(m => m.GetCustomAttributes(typeof(Subject), false).Length > 0)
                           .ToList();

            var helpMessage = "```cs\n" +
                              "'Standard Command List'\n" +
                              "```" +
                              "Use `n!command [command]` to get more info on a specific command. Ex: `n!command stats`  `[Prefix 'n!']` \n ";
            var categoryNum = 1;
            var categories  = new List <Categories>((Categories[])Enum.GetValues(typeof(Categories)));

            //removes the none enum
            categories.RemoveAt(0);

            foreach (var category in categories)
            {
                string categoryDesc = null;
                try
                {
                    categoryDesc = MiscHelpers.GetAttributeOfType <DescriptionAttribute>(category).Description;
                }
                catch (Exception)
                {
                    //do nothing
                }

                var categoryName = categoryDesc != null ? categoryDesc : category.ToString();


                helpMessage += $"\n**{categoryNum}. {categoryName} -**";

                foreach (var method in methods.ToList())
                {
                    var sub = method.GetCustomAttribute <Subject>(true);
                    if (sub.GetAdminCategories() == AdminCategories.None &&
                        sub.GetChomusukeCategories() == ChomusukeCategories.None &&
                        sub.GetOwnerCategories() == OwnerCategories.None &&
                        sub.GetNSFWCategories() == NSFWCategories.None)
                    {
                        if (sub.GetCategories() == category)
                        {
                            helpMessage += $" `{MiscHelpers.GetCommandAttribute(method).Text}`";
                            //removes the method from the list if successful to make it faster
                            methods.Remove(method);
                        }
                    }
                }

                categoryNum++;
            }

            helpMessage += "\n" +
                           "```\n" +
                           "# Don't include the example brackets when using commands!\n" +
                           "# To view Moderator commands, use n!helpMod\n" +
                           "# To view NSFW commands, use n!helpNsfw\n" +
                           "# To view Chomusuke commands, use n!helpChom\n" +
                           "```";
            var embed = EmbedHandler.CreateEmbed(Context, "Help Command", helpMessage,
                                                 EmbedHandler.EmbedMessageType.Info,
                                                 false);

            await SendMessage(Context, embed);
        }
예제 #2
0
        public async Task HelpMessageMod()
        {
            var guildUser = Context.User as SocketGuildUser;

            if (!guildUser.GuildPermissions.Administrator)
            {
                var description =
                    $"{Global.ENo} **|** You Need the **Administrator** Permission to do that {Context.User.Username}";
                var errorEmbed = EmbedHandler.CreateEmbed(Context, "Error", description,
                                                          EmbedHandler.EmbedMessageType.Exception);
                await ReplyAndDeleteAsync("", embed : errorEmbed);

                return;
            }

            var assembly = Assembly.Load("Nayu");
            var methods  = assembly.GetTypes()
                           .SelectMany(t => t.GetMethods())
                           .Where(m => m.GetCustomAttributes(typeof(Subject), false).Length > 0)
                           .ToList();

            var helpMessage = "```cs\n" +
                              "Moderator Command List\n" +
                              "```" +
                              "Use `n!command [command]` to get more info on a specific command. Ex: `n!command stats`  `[Prefix 'n!']` \n ";
            var categoryNum = 1;
            var categories  = new List <AdminCategories>((AdminCategories[])Enum.GetValues(typeof(AdminCategories)));

            //removes the none enum
            categories.RemoveAt(0);

            foreach (var category in categories)
            {
                string categoryDesc = null;
                try
                {
                    categoryDesc = MiscHelpers.GetAttributeOfType <DescriptionAttribute>(category).Description;
                }
                catch (Exception)
                {
                    //do nothing
                }

                var categoryName = categoryDesc != null ? categoryDesc : category.ToString();


                helpMessage += $"\n**{categoryNum}. {categoryName} -**";

                foreach (var method in methods.ToList())
                {
                    var sub = method.GetCustomAttribute <Subject>(true);
                    if (sub.GetCategories() == Categories.None &&
                        sub.GetChomusukeCategories() == ChomusukeCategories.None &&
                        sub.GetOwnerCategories() == OwnerCategories.None &&
                        sub.GetNSFWCategories() == NSFWCategories.None)
                    {
                        if (sub.GetAdminCategories() == category)
                        {
                            helpMessage += $" `{MiscHelpers.GetCommandAttribute(method).Text}`";
                            //removes the method from the list if successful to make it faster
                            methods.Remove(method);
                        }
                    }
                }

                categoryNum++;
            }

            helpMessage += "\n" +
                           "```\n" +
                           "# Don't include the example brackets when using commands!\n" +
                           "# To view standard commands, use n!help\n" +
                           "# To view NSFW commands, use n!helpNsfw\n" +
                           "# To view Chomusuke commands, use n!helpChom\n" +
                           "```";

            var embed = EmbedHandler.CreateEmbed(Context, "Moderator Help Command", helpMessage,
                                                 EmbedHandler.EmbedMessageType.Info,
                                                 false);

            await SendMessage(Context, embed);
        }