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); }
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()); }
// 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); }
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); }