public EmojiBar(int value, EmojiBarSet charOn, EmojiBarSet charOff, int width = 10) { MaxValue = value; ValueOn = charOn; ValueOff = charOff; Width = width; }
public async Task GuildProfile(EventContext e) { using (MikiContext context = new MikiContext()) { GuildUser g = await context.GuildUsers.FindAsync(e.Guild.Id.ToDbLong()); int rank = await g.GetGlobalRankAsync(context); int level = g.CalculateLevel(g.Experience); EmojiBarSet onBarSet = new EmojiBarSet("<:mbarlefton:391971424442646534>", "<:mbarmidon:391971424920797185>", "<:mbarrighton:391971424488783875>"); EmojiBarSet offBarSet = new EmojiBarSet("<:mbarleftoff:391971424824459265>", "<:mbarmidoff:391971424824197123>", "<:mbarrightoff:391971424862208000>"); EmojiBar expBar = new EmojiBar(g.CalculateMaxExperience(g.Experience), onBarSet, offBarSet, 6); EmbedBuilder embed = new EmbedBuilder() .SetAuthor(g.Name, e.Guild.IconUrl, "https://miki.veld.one") .SetColor(0.1f, 0.6f, 1) .AddInlineField(e.Locale.GetString("miki_terms_level"), level.ToFormattedString()); if ((e.Guild.IconUrl ?? "") != "") { embed.SetThumbnail("http://veld.one/assets/img/transparentfuckingimage.png"); } string expBarString = await expBar.Print(g.Experience, e.Guild, e.Channel as IDiscordGuildChannel); if (string.IsNullOrWhiteSpace(expBarString)) { embed.AddInlineField(e.Locale.GetString("miki_terms_experience"), "[" + g.Experience.ToFormattedString() + " / " + g.CalculateMaxExperience(g.Experience).ToFormattedString() + "]"); } else { embed.AddInlineField(e.Locale.GetString("miki_terms_experience") + $" [{g.Experience.ToFormattedString()} / {g.CalculateMaxExperience(g.Experience).ToFormattedString()}]", expBarString); } embed.AddInlineField( e.Locale.GetString("miki_terms_rank"), "#" + ((rank <= 10) ? $"**{rank.ToFormattedString()}**" : rank.ToFormattedString()) ).AddInlineField( e.Locale.GetString("miki_module_general_guildinfo_users"), g.UserCount.ToString() ); GuildUser rival = await g.GetRivalOrDefaultAsync(context); if (rival != null) { embed.AddInlineField(e.Locale.GetString("miki_terms_rival"), $"{rival.Name} [{rival.Experience.ToFormattedString()}]"); } await embed.ToEmbed().QueueToChannelAsync(e.Channel); } }
public async Task GuildProfile(EventContext context) { using (MikiContext database = new MikiContext()) { GuildUser g = await database.GuildUsers.FindAsync(context.Guild.Id.ToDbLong()); if (g == null) { await GuildUser.Create(context.Guild); g = await database.GuildUsers.FindAsync(context.Guild.Id.ToDbLong()); } int rank = g.GetGlobalRank(); int level = g.CalculateLevel(g.Experience); EmojiBarSet onBarSet = new EmojiBarSet("<:mbaronright:334479818924228608>", "<:mbaronmid:334479818848468992>", "<:mbaronleft:334479819003789312>"); EmojiBarSet offBarSet = new EmojiBarSet("<:mbaroffright:334479818714513430>", "<:mbaroffmid:334479818504536066>", "<:mbaroffleft:334479818949394442>"); EmojiBar expBar = new EmojiBar(g.CalculateMaxExperience(g.Experience), onBarSet, offBarSet, 6); IDiscordEmbed embed = Utils.Embed .SetAuthor(g.Name, context.Guild.AvatarUrl, "https://miki.veld.one") .SetColor(0.1f, 0.6f, 1) .SetThumbnailUrl("http://veld.one/assets/img/transparentfuckingimage.png") .AddInlineField(context.GetResource("miki_terms_level"), level.ToString()); string expBarString = await expBar.Print(g.Experience, context.Channel); if (string.IsNullOrWhiteSpace(expBarString)) { embed.AddInlineField(context.GetResource("miki_terms_experience"), "[" + g.Experience + " / " + g.CalculateMaxExperience(g.Experience) + "]"); } else { embed.AddInlineField(context.GetResource("miki_terms_experience") + $" [{g.Experience} / {g.CalculateMaxExperience(g.Experience)}]", expBarString); } embed.AddInlineField(context.GetResource("miki_terms_rank"), "#" + ((rank <= 10) ? $"**{rank}**" : rank.ToString())) .AddInlineField(context.GetResource("miki_module_general_guildinfo_users"), g.UserCount.ToString()); if (g.RivalId != 0) { GuildUser rival = await g.GetRival(); embed.AddInlineField(context.GetResource("miki_terms_rival"), $"{rival.Name} [{rival.Experience}]"); } await embed.SendToChannel(context.Channel); } }
public async Task GuildProfile(IContext e) { var context = e.GetService <MikiDbContext>(); var locale = e.GetLocale(); GuildUser g = await context.GuildUsers.FindAsync(e.GetGuild().Id.ToDbLong()); int rank = await g.GetGlobalRankAsync(context); int level = g.CalculateLevel(g.Experience); EmojiBarSet onBarSet = new EmojiBarSet("<:mbarlefton:391971424442646534>", "<:mbarmidon:391971424920797185>", "<:mbarrighton:391971424488783875>"); EmojiBarSet offBarSet = new EmojiBarSet("<:mbarleftoff:391971424824459265>", "<:mbarmidoff:391971424824197123>", "<:mbarrightoff:391971424862208000>"); EmojiBar expBar = new EmojiBar(g.CalculateMaxExperience(g.Experience), onBarSet, offBarSet, 6); EmbedBuilder embed = new EmbedBuilder() .SetAuthor(g.Name, e.GetGuild().IconUrl, "https://miki.veld.one") .SetColor(0.1f, 0.6f, 1) .AddInlineField(locale.GetString("miki_terms_level"), level.ToString("N0")); if ((e.GetGuild().IconUrl ?? "") != "") { embed.SetThumbnail("http://veld.one/assets/img/transparentfuckingimage.png"); } string expBarString = expBar.Print(g.Experience); embed.AddInlineField(e.GetLocale().GetString("miki_terms_experience"), $"[{g.Experience:N0} / {g.CalculateMaxExperience(g.Experience):N0}]\n" + (expBarString ?? "")); embed.AddInlineField( e.GetLocale().GetString("miki_terms_rank"), "#" + (rank <= 10 ? $"**{rank:N0}**" : rank.ToString("N0")) ).AddInlineField( e.GetLocale().GetString("miki_module_general_guildinfo_users"), g.UserCount.ToString() ); GuildUser rival = await g.GetRivalOrDefaultAsync(context); if (rival != null) { embed.AddInlineField(e.GetLocale().GetString("miki_terms_rival"), $"{rival.Name} [{rival.Experience:N0}]"); } await embed.ToEmbed() .QueueAsync(e, e.GetChannel()); }
public async Task GuildProfile(EventContext e) { using (MikiContext context = new MikiContext()) { GuildUser g = await GuildUser.GetAsync(context, e.Guild); int rank = g.GetGlobalRank(); int level = g.CalculateLevel(g.Experience); EmojiBarSet onBarSet = new EmojiBarSet("<:mbarlefton:391971424442646534>", "<:mbarmidon:391971424920797185>", "<:mbarrighton:391971424488783875>"); EmojiBarSet offBarSet = new EmojiBarSet("<:mbarleftoff:391971424824459265>", "<:mbarmidoff:391971424824197123>", "<:mbarrightoff:391971424862208000>"); EmojiBar expBar = new EmojiBar(g.CalculateMaxExperience(g.Experience), onBarSet, offBarSet, 6); IDiscordEmbed embed = Utils.Embed .SetAuthor(g.Name, e.Guild.AvatarUrl, "https://miki.veld.one") .SetColor(0.1f, 0.6f, 1) .SetThumbnailUrl("http://veld.one/assets/img/transparentfuckingimage.png") .AddInlineField(e.GetResource("miki_terms_level"), level.ToString()); string expBarString = await expBar.Print(g.Experience, e.Channel); if (string.IsNullOrWhiteSpace(expBarString)) { embed.AddInlineField(e.GetResource("miki_terms_experience"), "[" + g.Experience + " / " + g.CalculateMaxExperience(g.Experience) + "]"); } else { embed.AddInlineField(e.GetResource("miki_terms_experience") + $" [{g.Experience} / {g.CalculateMaxExperience(g.Experience)}]", expBarString); } embed.AddInlineField(e.GetResource("miki_terms_rank"), "#" + ((rank <= 10) ? $"**{rank}**" : rank.ToString())) .AddInlineField(e.GetResource("miki_module_general_guildinfo_users"), g.UserCount.ToString()); if (g.RivalId != 0) { GuildUser rival = await g.GetRival(); embed.AddInlineField(e.GetResource("miki_terms_rival"), $"{rival.Name} [{rival.Experience}]"); } await embed.QueueToChannel(e.Channel); } }
public async Task ProfileAsync(EventContext e) { Stopwatch sw = new Stopwatch(); sw.Start(); using (var context = new MikiContext()) { long id = 0; ulong uid = 0; if (e.message.MentionedUserIds.Count() > 0) { uid = e.message.MentionedUserIds.First(); id = uid.ToDbLong(); } else { uid = e.message.Author.Id; id = uid.ToDbLong(); } User account = await context.Users.FindAsync(id); Locale locale = Locale.GetEntity(e.Channel.Id.ToDbLong()); IDiscordUser discordUser = await e.Guild.GetUserAsync(uid); if (account != null) { IDiscordEmbed embed = Utils.Embed .SetDescription(account.Title) .SetAuthor(locale.GetString("miki_global_profile_user_header", account.Name), "http://veld.one/assets/profile-icon.png", "https://patreon.com/mikibot") .SetThumbnailUrl(discordUser.AvatarUrl); long serverid = e.Guild.Id.ToDbLong(); LocalExperience localExp = await context.Experience.FindAsync(serverid, id); int globalExp = account.Total_Experience; int rank = await account.GetLocalRank(e.Guild.Id); EmojiBarSet onBarSet = new EmojiBarSet("<:mbaronright:334479818924228608>", "<:mbaronmid:334479818848468992>", "<:mbaronleft:334479819003789312>"); EmojiBarSet offBarSet = new EmojiBarSet("<:mbaroffright:334479818714513430>", "<:mbaroffmid:334479818504536066>", "<:mbaroffleft:334479818949394442>"); EmojiBar expBar = new EmojiBar(account.CalculateMaxExperience(localExp.Experience), onBarSet, offBarSet, 6); string infoValue = new MessageBuilder() .AppendText(locale.GetString("miki_module_accounts_information_level", account.CalculateLevel(localExp.Experience), localExp.Experience, account.CalculateMaxExperience(localExp.Experience))) .AppendText(await expBar.Print(localExp.Experience, e.Channel)) .AppendText(locale.GetString("miki_module_accounts_information_rank", rank)) .AppendText("Reputation: " + account.Reputation, MessageFormatting.PLAIN, false) .Build(); embed.AddInlineField(locale.GetString("miki_generic_information"), infoValue); int globalLevel = account.CalculateLevel(account.Total_Experience); int globalRank = account.CalculateMaxExperience(account.Total_Experience); EmojiBar globalExpBar = new EmojiBar(account.CalculateMaxExperience(account.Total_Experience), onBarSet, offBarSet, 6); string globalInfoValue = new MessageBuilder() .AppendText(locale.GetString("miki_module_accounts_information_level", globalLevel, account.Total_Experience, globalRank)) .AppendText(await globalExpBar.Print(account.Total_Experience, e.Channel)) .AppendText(locale.GetString("miki_module_accounts_information_rank", account.GetGlobalRank()), MessageFormatting.PLAIN, false) .Build(); embed.AddInlineField(locale.GetString("miki_generic_global_information"), globalInfoValue); embed.AddInlineField(locale.GetString("miki_generic_mekos"), account.Currency + "🔸"); List <Marriage> marriages = Marriage.GetMarriages(context, id); marriages = marriages.OrderBy(mar => mar.TimeOfMarriage).ToList(); List <User> users = new List <User>(); int maxCount = marriages.Count; for (int i = 0; i < maxCount; i++) { users.Add(await context.Users.FindAsync(marriages[i].GetOther(id))); } if (marriages.Count > 0) { List <string> marriageStrings = new List <string>(); for (int i = 0; i < maxCount; i++) { if (marriages[i].GetOther(id) != 0 && marriages[i].TimeOfMarriage != null) { marriageStrings.Add("💕 " + users[i].Name + " (_" + marriages[i].TimeOfMarriage.ToShortDateString() + "_)"); } } embed.AddInlineField( locale.GetString("miki_module_accounts_profile_marriedto"), string.Join("\n", marriageStrings)); } Random r = new Random((int)id - 3); embed.Color = new IA.SDK.Color((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble()); List <CommandUsage> List = context.CommandUsages.Where(c => c.UserId == id).OrderByDescending(c => c.Amount).ToList(); string favCommand = (List.Count > 0) ? List[0].Name + " (" + List[0].Amount + ")" : "none (yet!)"; embed.AddInlineField(locale.GetString("miki_module_accounts_profile_favourite_command"), favCommand); string achievements = AchievementManager.Instance.PrintAchievements(context, account.Id.FromDbLong()); embed.AddInlineField( locale.GetString("miki_generic_achievements"), achievements != "" ? achievements : locale.GetString("miki_placeholder_null")); embed.AddInlineField(locale.GetString("miki_module_accounts_profile_url"), "http://miki.veld.one/profile/" + account.Id); embed.SetFooter(locale.GetString("miki_module_accounts_profile_footer", account.DateCreated.ToShortDateString(), sw.ElapsedMilliseconds), ""); sw.Stop(); await embed.SendToChannel(e.Channel); } else { await Utils.ErrorEmbed(locale, locale.GetString("miki_module_accounts_error_null")).SendToChannel(e.Channel); } } }
public async Task ProfileAsync(EventContext e) { Stopwatch sw = new Stopwatch(); sw.Start(); using (var context = new MikiContext()) { long id = 0; ulong uid = 0; if (e.message.MentionedUserIds.Any()) { uid = e.message.MentionedUserIds.First(); id = uid.ToDbLong(); } else { uid = e.message.Author.Id; id = uid.ToDbLong(); } Locale locale = new Locale(e.Channel.Id.ToDbLong()); IDiscordUser discordUser = await e.Guild.GetUserAsync(uid); User account = await User.GetAsync(context, discordUser); EmojiBarSet onBarSet = new EmojiBarSet( "<:mbarlefton:391971424442646534>", "<:mbarmidon:391971424920797185>", "<:mbarrighton:391971424488783875>"); EmojiBarSet offBarSet = new EmojiBarSet( "<:mbarleftoff:391971424824459265>", "<:mbarmidoff:391971424824197123>", "<:mbarrightoff:391971424862208000>"); if (account != null) { IDiscordEmbed embed = Utils.Embed .SetDescription(account.Title) .SetAuthor(locale.GetString("miki_global_profile_user_header", account.Name), "", "https://patreon.com/mikibot") .SetThumbnailUrl(discordUser.AvatarUrl); long serverid = e.Guild.Id.ToDbLong(); LocalExperience localExp = account.LocalExperience.FirstOrDefault(x => x.ServerId == e.Guild.Id.ToDbLong()); if (localExp == null) { localExp = await LocalExperience.CreateAsync(context, serverid, id); } int rank = await localExp.GetRank(context); int localLevel = User.CalculateLevel(localExp.Experience); int maxLocalExp = User.CalculateLevelExperience(localLevel); int minLocalExp = User.CalculateLevelExperience(localLevel - 1); EmojiBar expBar = new EmojiBar(maxLocalExp - minLocalExp, onBarSet, offBarSet, 6); string infoValue = new MessageBuilder() .AppendText(locale.GetString("miki_module_accounts_information_level", localLevel, localExp.Experience, maxLocalExp)) .AppendText(await expBar.Print(localExp.Experience - minLocalExp, e.Channel)) .AppendText(locale.GetString("miki_module_accounts_information_rank", rank)) .AppendText("Reputation: " + account.Reputation, MessageFormatting.Plain, false) .Build(); embed.AddInlineField(locale.GetString("miki_generic_information"), infoValue); int globalLevel = User.CalculateLevel(account.Total_Experience); int maxGlobalExp = User.CalculateLevelExperience(globalLevel); int minGlobalExp = User.CalculateLevelExperience(globalLevel - 1); int globalRank = await account.GetGlobalRankAsync(); EmojiBar globalExpBar = new EmojiBar(maxGlobalExp - minGlobalExp, onBarSet, offBarSet, 6); string globalInfoValue = new MessageBuilder() .AppendText(locale.GetString("miki_module_accounts_information_level", globalLevel, account.Total_Experience, maxGlobalExp)) .AppendText(await globalExpBar.Print(account.Total_Experience - minGlobalExp, e.Channel)) .AppendText(locale.GetString("miki_module_accounts_information_rank", globalRank), MessageFormatting.Plain, false) .Build(); embed.AddInlineField(locale.GetString("miki_generic_global_information"), globalInfoValue); embed.AddInlineField(locale.GetString("miki_generic_mekos"), account.Currency + "🔸"); List <Marriage> Marriages = account.Marriages? .Select(x => x.Marriage) .Where(x => !x.IsProposing) .OrderBy(mar => mar.TimeOfMarriage) .ToList(); List <User> users = new List <User>(); int maxCount = Marriages?.Count ?? 0; for (int i = 0; i < maxCount; i++) { users.Add(await context.Users.FindAsync(Marriages[i].GetOther(id))); } if (Marriages?.Count > 0) { List <string> MarriageStrings = new List <string>(); for (int i = 0; i < maxCount; i++) { if (Marriages[i].GetOther(id) != 0) { MarriageStrings.Add($"💕 {users[i].Name} (_{Marriages[i].TimeOfMarriage.ToShortDateString()}_)"); } } embed.AddInlineField( locale.GetString("miki_module_accounts_profile_marriedto"), string.Join("\n", MarriageStrings)); } Random r = new Random((int)id - 3); embed.Color = new Miki.Common.Color((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble()); CommandUsage favouriteCommand = account.CommandsUsed? .OrderByDescending(c => c.Amount) .FirstOrDefault(); string favCommand = $"{favouriteCommand?.Name ?? locale.GetString("miki_placeholder_null")} ({ favouriteCommand?.Amount ?? 0 })"; embed.AddInlineField(locale.GetString("miki_module_accounts_profile_favourite_command"), favCommand); if (account.Achievements != null) { string achievements = AchievementManager.Instance.PrintAchievements(account.Achievements); embed.AddInlineField( locale.GetString("miki_generic_achievements"), achievements != "" ? achievements : locale.GetString("miki_placeholder_null")); } embed.SetFooter( locale.GetString("miki_module_accounts_profile_footer", account.DateCreated.ToShortDateString(), sw.ElapsedMilliseconds), ""); sw.Stop(); embed.QueueToChannel(e.Channel); } else { e.ErrorEmbed(locale.GetString("error_account_null")) .QueueToChannel(e.Channel); } } }