예제 #1
0
        public static EmbedBuilder QuoteEmbed(IUser User)
        {
            //necessary string variables
            string       quote = ProfileDb.GetQuote(User.Id);
            string       image = ProfileDb.GetImage(User.Id);
            EmbedBuilder embed = new EmbedBuilder();

            //quote embed
            if (String.IsNullOrEmpty(quote) && !WebUtil.IsValidUrl(image))
            {
                return(null);
            }
            embed.WithColor(ProfileDb.GetHex(out string colour, User.Id)? (Discord.Color)HexToColor(colour) : BasicUtil.RandomColor());
            embed.WithAuthor(User);
            embed.WithDescription(quote);
            embed.WithImageUrl(image);
            return(embed);
        }
예제 #2
0
        public async Task SetPersonalImage([Remainder] string image = null)
        {
            image ??= Context.Message.Attachments.FirstOrDefault()?.Url;

            //to delete image
            if (image == null)
            {
                await ProfileDb.SetImage(Context.User.Id, null);

                await Context.Channel.SendMessageAsync("Image removed.");

                return;
            }

            //url check
            if (!WebUtil.IsValidUrl(image))
            {
                await Context.Channel.SendMessageAsync("This URL is just like you... Invalid.");

                return;
            }

            //image validity check
            if (!WebUtil.IsImageUrl(image))
            {
                await Context.Channel.SendMessageAsync("This URL is not an image, what do you want me to do with it?");

                return;
            }

            //building embed
            await ProfileDb.SetImage(Context.User.Id, image);

            EmbedBuilder embed = UserUtil.QuoteEmbed(Context.User);
            await Context.Channel.SendMessageAsync("Image set!", false, embed.Build());
        }
예제 #3
0
        // Embeds
        //Embed Method: profile
        public static async Task <EmbedBuilder> ProfileEmbed(SocketGuildUser user)
        {
            var eb = new EmbedBuilder();

            string name = user.Username;

            var role = RoleUtil.GetMemberRole(user.Guild, user) ?? RoleUtil.GetLeaderRole(user.Guild, user);

            if (role != null)
            {
                var team = TeamDb.TeamByMember(role.Id) ?? TeamDb.TeamByLeader(role.Id);
                if (team != null)
                {
                    role = user.Roles.FirstOrDefault(x => x.Id == team.LeaderRoleId);
                    if (role == null)
                    {
                        role = user.Roles.FirstOrDefault(x => x.Id == team.MemberRoleId);
                    }

                    name += $" | {role.Name}";
                }
            }

            if (PremiumDb.IsPremium(user.Id, ProType.ProPlus))
            {
                name += " | Pro+ 🌟";
            }
            else if (PremiumDb.IsPremium(user.Id, ProType.Pro))
            {
                name += " | Pro ⭐";
            }
            eb.WithAuthor(name, user.GetAvatarUrl(), $"https://namiko.moe/Guild/{user.Guild.Id}/{user.Id}");

            var waifus     = UserInventoryDb.GetWaifus(user.Id, user.Guild.Id);
            int waifucount = waifus.Count();
            int waifuprice = WaifuUtil.WaifuValue(waifus);

            var  daily   = DailyDb.GetDaily(user.Id, user.Guild.Id);
            long timeNow = DateTimeOffset.Now.ToUnixTimeMilliseconds();

            string text = "";

            text += $"Amount: {BalanceDb.GetToasties(user.Id, user.Guild.Id).ToString("n0")}\n" +
                    $"Daily: {(daily == null ? "0" : ((daily.Date + 172800000) < timeNow ? "0" : daily.Streak.ToString()))}\n" +
                    $"Boxes Opened: {ProfileDb.GetLootboxOpenedAmount(user.Id)}\n";
            eb.AddField("Toasties <:toastie3:454441133876183060>", text, true);

            text = $"Amount: {waifucount}\n" +
                   $"Value: {waifuprice.ToString("n0")}\n";
            foreach (var x in MarriageDb.GetMarriages(user.Id, user.Guild.Id))
            {
                try
                {
                    if (!text.Contains("Married: "))
                    {
                        text += "Married: ";
                    }
                    text += $"{BasicUtil.IdToMention(GetWifeId(x, user.Id))}\n";
                } catch { }
            }
            eb.AddField("Waifus :two_hearts:", text, true);

            var waifu = FeaturedWaifuDb.GetFeaturedWaifu(user.Id, user.Guild.Id);

            if (waifu != null)
            {
                eb.WithImageUrl(waifu.HostImageUrl);
                eb.AddField("Featured Waifu <:MiaHug:536580304018735135>", $"**{waifu.Name}** - *{waifu.Source}*");
            }

            var    rep    = ProfileDb.GetRepAmount(user.Id);
            string footer = $"Votes: {await VoteDb.VoteCount(user.Id)} • ";

            footer += $"Rep: {rep} • ";
            // Activities require guildpresence
            //footer += $"Status: '{user.Status}'";
            //var activity = user.Activities.FirstOrDefault();
            //if (activity != null)
            //    footer += $", {activity.Type}: '{activity.Name}'";
            eb.WithFooter(footer);

            //quote
            string quote = ProfileDb.GetQuote(user.Id);

            if (!String.IsNullOrEmpty(quote) & !WebUtil.IsValidUrl(quote))
            {
                eb.WithDescription(quote);
            }

            //image
            string image = ProfileDb.GetImage(user.Id);

            if (WebUtil.IsValidUrl(image))
            {
                eb.WithThumbnailUrl(image);
            }

            eb.Color = ProfileDb.GetHex(out string colour, user.Id)? (Discord.Color)HexToColor(colour) : BasicUtil.RandomColor();
            return(eb);
        }
예제 #4
0
        public async Task DownloadFiles(string path, int amount, int skip = 0, ulong channelId = 0)
        {
            await Context.Message.DeleteAsync();

            var ch       = channelId == 0 ? Context.Channel : (ISocketMessageChannel)Context.Client.GetChannel(channelId);
            var messages = await ch.GetMessagesAsync(amount, CacheMode.AllowDownload).FlattenAsync();

            int total      = 0;
            int downloaded = 0;

            foreach (var msg in messages.Skip(skip))
            {
                if (msg.Type != MessageType.Default)
                {
                    continue;
                }

                foreach (var attachment in msg.Attachments.Where(x => x.Height != null && x.Width != null))
                {
                    if (WebUtil.IsValidUrl(attachment.ProxyUrl))
                    {
                        Task.Run(() => DownloadFile(attachment.ProxyUrl,
                                                    path + @"\"
                                                    + msg.Timestamp.UtcDateTime.ToString("yyyy-MM-dd_HHmm") + "_"
                                                    + attachment.Filename))
                        .ContinueWith(x =>
                        {
                            if (x.Result == true)
                            {
                                downloaded++;
                                if (downloaded % 5 == 0)
                                {
                                    Console.WriteLine("Downloaded: " + downloaded);
                                }
                            }
                        });
                        total++;
                        if (total % 50 == 0)
                        {
                            Console.WriteLine("Total: " + total);
                        }
                    }
                }

                foreach (var word in msg.Content.Split(' '))
                {
                    if (WebUtil.IsValidUrl(word) && WebUtil.IsImageUrl(word))
                    {
                        Task.Run(() => DownloadFile(word,
                                                    path + @"\"
                                                    + msg.Timestamp.UtcDateTime.ToString("yyyy-MM-dd_HHmm") + "_"
                                                    + word.Split(@"/").Last()))
                        .ContinueWith(x =>
                        {
                            if (x.Result == true)
                            {
                                downloaded++;
                                if (downloaded % 5 == 0)
                                {
                                    Console.WriteLine("Downloaded: " + downloaded);
                                }
                            }
                        });
                        total++;
                        if (total % 50 == 0)
                        {
                            Console.WriteLine("Total: " + total);
                        }
                    }
                }
            }
            Console.WriteLine("Total: " + total);
        }