Beispiel #1
0
        private async Task ModulesHelp()
        {
            ModuleInfo[] moduleInfos = Command.Modules.GroupBy(x => x.Name).Select(y => y.First()).ToArray();

            EmbedBuilder[] builders = new EmbedBuilder[(moduleInfos.Length / modulesPerPage) + 1];

            for (int j = 0; j < builders.Length; j++)
            {
                EmbedBuilder builder = builders[j] = new EmbedBuilder();
                builder.Description = $"Do \"{Prefix}help [command]\" to get more information about a command";
                builder.WithThumbnailUrl(Emotes.BelfastThink.Url);
                builder.WithColor(0xffae0d);
            }

            int i = 0;

            foreach (ModuleInfo module in moduleInfos)
            {
                string[] commandNames = module.Commands.Select(cmd => $"► **{cmd.Name}**: [{cmd.Summary ?? "None"}]").ToArray();

                EmbedBuilder builder = builders[i / modulesPerPage];

                if (commandNames.Length > 0)
                {
                    builder.AddField($"{i+1}", $"" +
                                     $"__**{module.Name.Replace("Module", " ")} - {module.Summary ?? ""}**__\n" +
                                     $"{commandNames.NewLineSeperatedString()}");
                }

                i++;
            }

            await PaginatedMessageService.SendPaginatedEmbedMessageAsync(Context.Channel, builders);
        }
Beispiel #2
0
        public async Task LeaderboardAsync(bool isGlobal = false)
        {
            ServerEntry server = Db.GetServerEntry(0);
            IEnumerable <DatabaseUserEntry> users = server.Users;

            if (!isGlobal)
            {
                users = users.Where(user => Context.Guild.GetUserAsync(user.Id).Result != null);
            }
            IEnumerable <DatabaseUserEntry> sortedUser = users.OrderByDescending(user => user.Xp);

            int    i        = 1;
            string lbString = (await Task.WhenAll(sortedUser.Select(async(user) => $"► **[{i++}] {await Client.GetUserAsync(user.Id)}** - lvl {user.Level} ({user.Xp} xp)"))).NewLineSeperatedString();

            if (string.IsNullOrEmpty(lbString))
            {
                await ReplyAsync("> Empty leaderboard");

                return;
            }

            string[] strings = lbString.NCharLimitToClosestDelimeter(512, "\n");

            await PaginatedMessageService.SendPaginatedDataMessageAsync(
                Context.Channel,
                strings,
                (result, index, footer) => GetLeaderBoardPageEmbed(Context.Guild, result, isGlobal, footer)
                );
        }
Beispiel #3
0
        public async Task GetUserGacha([Summary("(optional) The user profile to get")] IUser target = null)
        {
            target = target ?? Context.Message.Author;

            if (target.IsBot)
            {
                return;
            }

            DatabaseUserEntry userData = Db.GetUserEntry(0, target.Id);

            if (userData.Cards.Count <= 0)
            {
                await Context.Channel.SendMessageAsync($"{Emotes.BelfastShock} You don't seem to have any cards.\nTry .gao to open cards.");

                return;
            }

            string characterString = userData.Cards.Count > 0
                ? userData.Cards.Select(card => $"► **[{card.Name}](https://www.animecharactersdatabase.com/characters.php?id={card.Id})** [{card.Rarity}] x{card.Amount}").NewLineSeperatedString()
                : "**None**";

            string[] strings = characterString.NCharLimitToClosestDelimeter(512, "\n");

            await PaginatedMessageService.SendPaginatedDataMessageAsync(
                Context.Channel,
                strings,
                (result, index, footer) => GetUserGachaEmbed(target, result, footer)
                );
        }
Beispiel #4
0
        public async Task SearchMalAnimeAsync([Summary("Title to search")][Remainder] string name = "Azur Lane")
        {
            Logger.LogInfo($"Searching for {name} on myanimelist");

            ulong[] ids = await MalClient.GetAnimeIdAsync(name);

            AnimeResult[] resultCache = new AnimeResult[ids.Length];

            await PaginatedMessageService.SendPaginatedDataAsyncMessageAsync(Context.Channel, ids, async (ulong id, int index, EmbedFooterBuilder footer) => {
                if (resultCache[index].MalId != 0)
                {
                    return(GetAnimeResultEmbed(resultCache[index], index, footer));
                }
                else
                {
                    AnimeResult result = resultCache[index] = await MalClient.GetDetailedAnimeResultsAsync(id);
                    return(GetAnimeResultEmbed(result, index, footer));
                }
            });
        }
 public async Task ReplyAndWaitAsync(IPaginatedMessage message) => await PaginatedMessageService.SendMessageAndWaitAsync(Context, message);