public async Task invite() { await Context.Channel.SendMessageAsync("Sent you a DM's :smile:"); Discord.IDMChannel gencom = await Context.Message.Author.GetOrCreateDMChannelAsync(); var embed = new EmbedBuilder(); embed.Description += $"Invite the bot to your server by [this link]({Program.invite_link})"; embed.WithColor(new Color(125, 164, 120)); var topgg = new EmbedFieldBuilder(); topgg.IsInline = true; topgg.Name = "We on top.gg"; topgg.Value = $"[vote!]({topgg_link})"; embed.AddField(topgg); var dbotlist = new EmbedFieldBuilder(); dbotlist.IsInline = true; dbotlist.Name = "We on discordbotlist"; dbotlist.Value = $"[vote!]({discordbotlist_link})"; embed.AddField(dbotlist); await gencom.SendMessageAsync("", false, embed.Build()); await gencom.CloseAsync(); }
// GIANT HACK: This overload is very redundant, needed a quick bugfix... private Embed buildYtEmbed(YoutubeExplode.Models.Video ytMetadata, EmbedFieldBuilder additionalField) { var ytEmbed = new EmbedBuilder { Title = String.Format(config["strings:video_embed_title"], Format.Sanitize(ytMetadata.Title)), Author = new EmbedAuthorBuilder { Name = String.Format(config["strings:video_embed_author"], Format.Sanitize(ytMetadata.Author)), IconUrl = config["strings:video_embed_author_thumb_url"] }, ThumbnailUrl = ytMetadata.Thumbnails.HighResUrl, Description = String.Format(config["strings:video_embed_description"], Format.Sanitize(ytMetadata.Description)).Length <= 2048 ? String.Format(config["strings:video_embed_description"], Format.Sanitize(ytMetadata.Description)) : $"{String.Format(config["strings:video_embed_description"], Format.Sanitize(ytMetadata.Description)).Substring(0, 2045)}...", Footer = new EmbedFooterBuilder().WithText( String.Format(config["strings:video_embed_footer"], ytMetadata.Duration.ToString(), ytMetadata.Statistics.ViewCount) ) } .WithFields( new EmbedFieldBuilder() .WithName(config["strings:video_embed_likes_title"]) .WithValue(String.Format(config["strings:video_embed_likes_description"], ytMetadata.Statistics.LikeCount)) .WithIsInline(true), new EmbedFieldBuilder() .WithName(config["strings:video_embed_dislikes_title"]) .WithValue(String.Format(config["strings:video_embed_dislikes_description"], ytMetadata.Statistics.DislikeCount)) .WithIsInline(true), additionalField ); return(ytEmbed.Build()); }
/// <summary> /// Embed creator to build a better Message /// </summary> /// <param name="clip"></param> /// <returns></returns> private Embed CreateEmbed(ClipInfo clip) { EmbedBuilder clipInfo = new EmbedBuilder() { Description = clip.title }; string creatorName = "Name is missing"; if (clip.creator_name != "") { creatorName = clip.creator_name; } EmbedFieldBuilder field1 = new EmbedFieldBuilder() { Name = "Creator", Value = creatorName, IsInline = true }; EmbedFieldBuilder field2 = new EmbedFieldBuilder() { Name = "Created at", Value = clip.created_at.ToString("dd.MM.yyyy"), IsInline = true }; clipInfo.AddField(field1); clipInfo.AddField(field2); Embed finished = clipInfo.Build(); return(finished); }
public GeobieBandsModule(GeobieBands bands, DiscordSocketClient client) { _bands = bands; _client = client; EmbedFieldBuilder GeobieHelpCommandField = new EmbedFieldBuilder(); GeobieHelpCommandField.Name = "Goebiebands Commands"; GeobieHelpCommandField.Value = "`-s <world> <type> <user>`\n`-dead <world>`\n`-removeworld <world>`"; GeobieHelpCommandField.WithIsInline(true); EmbedFieldBuilder GeobieHelpDescriptionField = new EmbedFieldBuilder(); GeobieHelpDescriptionField.Name = "Description"; GeobieHelpDescriptionField.IsInline = true; GeobieHelpDescriptionField.Value = "Registers a scout. Types: a, f, w.\nMark a world dead.\nRemoves a world from the list."; EmbedFieldBuilder worlds = new EmbedFieldBuilder(); worlds.Name = "World Information"; worlds.Value = "Early spawn worlds: 12, 14, 15, 30, 37, 49, 50, 51, 65, 83, 84\n" + "Early spawn worlds spawn at: 02 and die at: 22\n" + "All other worlds spawn at: 05 and die at: 25"; eb1.AddField(GeobieHelpCommandField); eb1.AddField(GeobieHelpDescriptionField); eb1.AddField(worlds); }
public async Task GetPendingForGuild() { var query = VerificationFormDataHandler.GetPendingVerificationFormsByGuild(Context.Guild.Id); var embed = new EmbedBuilder { Author = new EmbedAuthorBuilder { Name = "Pending Verifications", IconUrl = Context.Client.CurrentUser.GetAvatarUrl() }, Color = Color.Blue, Timestamp = DateTime.UtcNow }; foreach (var form in query) { var field = new EmbedFieldBuilder { Name = Context.Guild.GetUser(form.Verified).Username, Value = $"Verifier: { Context.Guild.GetUser(form.Verifier).Username } \n Issued: { form.IssuedUtc.ToString(format: "dd/MM/yyyy HH:mm") }" }; embed.AddField(field); } await _replyservice.ReplyEmbedAsync(context : Context, embed : embed); }
public async Task Help() { var fieldList = new List <EmbedFieldBuilder>(); //foreach availble module //set the module description to "No Description" if there is no available description //create fields based on the module name and result of the above condition foreach (ModuleInfo module in BotConfig.Commands.Modules) { var result = (module.Summary == null) ? "No Description" : module.Summary; var field = new EmbedFieldBuilder { Name = module.Name, Value = result }; fieldList.Add(field); } //embed template var easyEmbed = new EasyEmbed() { AuthorName = "List of Commands", AuthorIcon = $"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/153/scroll_1f4dc.png", EmbedColor = Color.Blue, EmbedDescription = $"If you'd like more information on how to use a command a certain command then use `/help [command name]` " + $"to get more detailed information.", EmbedFieldList = fieldList }; //send the message await Context.Channel.SendMessageAsync(embed : easyEmbed.Build()); }
private Embed BuildEmbedMessage(BuildDetails buildDetails) { var eAuthor = new EmbedAuthorBuilder { Name = buildDetails.ProjectDetails.ProjectName, Url = "https://github.com/" + buildDetails.RepositoryDetails.Id }; var eFooter = new EmbedFooterBuilder { Text = "Azure Pipelines" }; var color = buildDetails.Result == "succeeded" ? Colors.Green : Colors.Red; var e = new EmbedBuilder { Author = eAuthor, Footer = eFooter, Color = color, Title = $"Build: #{buildDetails.Id} on {buildDetails.PipelineDetails.PipelineName} {buildDetails.Result}", Url = buildDetails.Url }; var field = new EmbedFieldBuilder { Name = $"[{buildDetails.RepositoryDetails.Id}:{buildDetails.TriggerDetails.SourceBranch ?? string.Empty}]", Value = $"{buildDetails.TriggerDetails.Message ?? string.Empty}" }; e.AddField(field); return(e.Build()); }
public async Task Yardim() { await Turkcemi(Context); string description = "\n!yardım\n!sil <mesaj sayısı> {kullanici}\n!dil <Türkçe / İngilizce>\n!sihirdar <sihirdar ismi>\n!taşı <kullanıcı> <hedef kanal>\n!sustur <kullanıcı>\n!sağırlaştır <kullanıcı>\n!embed <başlık> <açıklama>\n!hesapla <sayı> <işlem> <sayı>\n!saat" + "\n!oyun <isim>\n!isim <kullanıcı> <yeni isim>\n!davet\n!̶a̶p̶i̶k̶e̶y̶ ̶<̶R̶i̶o̶t̶ ̶a̶p̶i̶ ̶a̶n̶a̶h̶t̶a̶r̶ı̶>̶\n!rastgele <alt limit> <üst limit>\n!ping\n!asal <sayı>\n!say <süre> {Sn / Dk}\n!anket <soru>\n!secenekler <secenek> <secenek> {secenek} {secenek} {secenek}\n!anketbitir" + "\n!hava <şehir>\n!havaradar\n!özürlü <başlık>\n!binary <yazı>\n!text <binary>\n!mcskin <username>\n!emoji <metin>\n!topla\n!typing-game"; description += "\n\n Bot davet linki: http://goo.gl/EkUUb7"; string description2 = "Kullanılabilir komutlar: \nSüslü parantez içerisinde olan parametreler isteğe bağlıdır.\n**"; string title = "Github için tıklayın"; if (l == 0) { description = "\n!help\n!delete <number of messages> {user}\n!language <English / Turkish>\n!summoner <summoner name>\n!move <user> <target channel>\n!mute <user>\n!deaf <user>\n!embed <title> <description>\n!calculate <number> <operation> <number>\n!time" + "\n!game <game name>\n!name <user> <new name>\n!invite\n!random <lower limit> <upper limit>\n!ping\n!isprime <number>\n!count <time> {s / m}\n!poll <question>\n!options <option> <option> {option} {option} {option}\n!finishpoll\n!typing-game" + "\n!weather <city>\n!sarcastic <text>\n!binary <text>\n!text <binary>\n!mcskin <username>\n!emoji <text>\n!collect"; description += "\n\n Bot invite link: http://goo.gl/EkUUb7"; title = "Click for Github"; description2 = "Available commands: \nParameters in fancy brackets are optional.\n**"; } var eb = new EmbedBuilder() { Title = title, Description = description2 + description + "**", Color = Color.Blue }; var fb = new EmbedFieldBuilder(); eb.WithUrl("https://github.com/tameryesildag/A-new-bot"); await Context.Channel.SendMessageAsync("", false, eb); }
public async Task BanAsync([RequireBotHierarchy("ban")][RequireInvokerHierarchy("ban")] SocketGuildUser user, string prune = null, [Remainder] string reason = null) { List <Task> cmds = int.TryParse(prune, out int pruneDays) ? new List <Task>() { user.BanAsync(pruneDays, reason) } : new List <Task>() { user.BanAsync(0, reason) }; EmbedBuilder embed = new EmbedBuilder() .WithColor(new Color(130, 0, 0)) .WithDescription($"The communist spy {user.Mention} has been given the ~~ban~~ freedom hammer."); EmbedFieldBuilder reasonField = new EmbedFieldBuilder() .WithIsInline(false) .WithName("Reason") .WithValue($"{reason ?? "[none given]"}"); embed.AddField(reasonField); cmds.AddRange(new List <Task>() { Context.Channel.SendMessageAsync(embed: embed.Build()), BanModLog.SendToModLogAsync(Context.User as SocketGuildUser, user, null, reason) }); await Task.WhenAll(cmds); }
public async Task HelpAsync() { EmbedBuilder embed = new EmbedBuilder() .WithColor(SecurityInfo.botColor) .WithTitle(SecurityInfo.botName); EmbedFieldBuilder prefix = new EmbedFieldBuilder() .WithIsInline(false) .WithName("Prefix") .WithValue("\\" + "\n**or**\n" + Context.Client.CurrentUser.Mention + "\n\u200b"); embed.AddField(prefix); EmbedFieldBuilder field = new EmbedFieldBuilder() .WithIsInline(false) .WithName("Commands") .WithValue( "ping\n" + " - Returns the bot's Server and API latencies\n\n" + "setchannel [channel mention/channel ID]\n" + " - Sets the time channel" ); embed.AddField(field); await Context.Channel.SendMessageAsync(embed : embed.Build()); }
public async Task HelpAsync() { EmbedBuilder embed = new EmbedBuilder() .WithColor(SecurityInfo.botColor) .WithTitle(SecurityInfo.botName) .WithCurrentTimestamp(); List <EmbedFieldBuilder> fields = new() { new EmbedFieldBuilder() .WithIsInline(false) .WithName("Prefix") .WithValue(CommandHandler.prefix + "\n**or**\n" + Context.Client.CurrentUser.Mention + "\n\u200b") }; EmbedFieldBuilder field = new EmbedFieldBuilder() .WithIsInline(true) .WithName("Commands") .WithValue(help); fields.Add(field); embed.WithFields(fields); await Context.Channel.SendMessageAsync("", false, embed.Build()); } }
private async Task <ulong> LodgeTransactionTask(DataBaseHandlingService db, CommandHandlingService CommandService, StockMarketService marketService, int hours, int mins) { EmbedFieldBuilder typeField = new EmbedFieldBuilder().WithIsInline(true).WithName("Type:").WithValue($"Industry Auction"); EmbedFieldBuilder companyField = new EmbedFieldBuilder().WithIsInline(true).WithName("ID:").WithValue(industryID); EmbedFieldBuilder amountField = new EmbedFieldBuilder().WithIsInline(true).WithName("Type:").WithValue((string)await db.GetFieldAsync(industryID, "Type", "industries")); EmbedFieldBuilder priceField = new EmbedFieldBuilder().WithIsInline(true).WithName("Price:").WithValue("$" + price); EmbedBuilder emb = new EmbedBuilder().WithTitle("Stock Market Offer").WithDescription($"Use the command `&bid [ticker] {id.ToString()} [price]` to accept this offer.").WithFooter($"Transaction ID: {id.ToString()}").AddField(typeField).AddField(companyField).AddField(amountField).AddField(priceField).WithColor(Color.Green); Discord.Rest.RestUserMessage message = await CommandService.PostEmbedTask((string)await db.GetFieldAsync("MarketChannel", "channel", "system"), emb.Build()); DateTime now = DateTime.UtcNow; DateTime scheduled = now.AddHours(hours).AddMinutes(mins); plannedEnd = scheduled; JobDataMap map = new JobDataMap(); map.Add("market", marketService); map.Add("auction", this); map.Add("command", CommandService); map.Add("db", db); IJobDetail job = JobBuilder.Create <Job>().SetJobData(map).Build(); ITrigger trigger = TriggerBuilder.Create().WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromMilliseconds(1)).WithRepeatCount(1)).StartAt(plannedEnd).Build(); await CommandService.scheduler.ScheduleJob(job, trigger); return(message.Id); }
private static bool getEmbedField(JSONField fieldJSON, out EmbedFieldBuilder field) { if (fieldJSON.Container.TryGetField(NAME, out string name) && fieldJSON.Container.TryGetField(VALUE, out string value)) { fieldJSON.Container.TryGetField(INLINE, out bool isInline, false); if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(value)) { if (name.Length > EMBEDFIELDNAME_MAX) { throw new EmbedParseException($"A field name may not exceed {EMBEDFIELDNAME_MAX} characters!"); } if (value.Length > EMBEDFIELDVALUE_MAX) { throw new EmbedParseException($"A field value may not exceed {EMBEDFIELDVALUE_MAX} characters!"); } field = new EmbedFieldBuilder() { Name = name, Value = value, IsInline = isInline }; return(true); } } field = null; return(false); }
private IReadOnlyList <IReadOnlyList <EmbedFieldBuilder> > BuildModuleListPages() { var pages = new List <IReadOnlyList <EmbedFieldBuilder> >(); var currentPage = new List <EmbedFieldBuilder>(); var currentContentLength = 0; foreach (var module in _modules) { var moduleContentLength = module.Name.Length + module.Summary.Length; if (currentPage.Count >= 3 || currentContentLength + moduleContentLength > 1300) { pages.Add(currentPage); currentPage = new List <EmbedFieldBuilder>(); currentContentLength = 0; } var ebf = new EmbedFieldBuilder().WithName(module.Name).WithValue(module.Summary); currentPage.Add(ebf); currentContentLength += moduleContentLength; if (module == _modules.Last() && !pages.Contains(currentPage)) { pages.Add(currentPage); } } return(pages); }
private async Task Help() { var embed = new EmbedBuilder() { Color = Colors.helpCol }; var footer = new EmbedFooterBuilder() { Text = "Requested by " + Context.User.Username }; var generalField = new EmbedFieldBuilder() { Name = ServerConfig.Load("servers/" + Context.Guild.Id.ToString() + ".json").serverPrefix + "help general", Value = "Displays General Commands." }; var musicField = new EmbedFieldBuilder() { Name = ServerConfig.Load("servers/" + Context.Guild.Id.ToString() + ".json").serverPrefix + "help music", Value = "Displays Music Commands." }; var bankField = new EmbedFieldBuilder() { Name = ServerConfig.Load("servers/" + Context.Guild.Id.ToString() + ".json").serverPrefix + "help bank", Value = "Displays Bank Commands." }; var aucField = new EmbedFieldBuilder() { Name = ServerConfig.Load("servers/" + Context.Guild.Id.ToString() + ".json").serverPrefix + "help auction", Value = "Displays Auction Commands." }; var nsfwField = new EmbedFieldBuilder() { Name = ServerConfig.Load("servers/" + Context.Guild.Id.ToString() + ".json").serverPrefix + "help nsfw", Value = "Displays NSFW Commands." }; var adminField = new EmbedFieldBuilder() { Name = ServerConfig.Load("servers/" + Context.Guild.Id.ToString() + ".json").serverPrefix + "help admin", Value = "Displays Admin Commands." }; embed.Title = $"╋━━━━━━◥◣ KnightBot Help ◢◤━━━━━━╋"; embed.Description = "More Commands Will Be Added Soon!"; embed.WithFooter(footer); embed.WithCurrentTimestamp(); embed.AddField(generalField); embed.AddField(musicField); embed.AddField(bankField); embed.AddField(aucField); embed.AddField(nsfwField); embed.AddField(adminField); await Context.Channel.SendMessageAsync("", false, embed); var result = BankConfig.Load("bank/" + Context.User.Id.ToString() + ".json").currentMoney; int bal = 10; total = result + bal; save.userID = BankConfig.Load("bank/" + Context.User.Id.ToString() + ".json").userID; save.currentMoney = total; save.currentPoints = BankConfig.Load("bank/" + Context.User.Id.ToString() + ".json").currentPoints; save.Save("bank/" + Context.User.Id.ToString() + ".json"); }
public async Task MALUser([Remainder] string User) { try { HttpClient client = new HttpClient(); var json = client.GetStringAsync("https://api.jikan.moe/v3/user/" + User); MALUser x = JsonConvert.DeserializeObject <MALUser>(json.Result); var MAL = new EmbedBuilder(); EmbedFieldBuilder watched = new EmbedFieldBuilder(); watched.IsInline = true; watched.Name = "Days Watched: "; watched.Value = x.anime_stats.days_watched; EmbedFieldBuilder total = new EmbedFieldBuilder(); total.IsInline = false; total.Name = "Total Entries: "; total.Value = x.anime_stats.total_entries; MAL.WithTitle(x.username) .WithThumbnailUrl(x.image_url) .AddField(watched) .AddField(total) .AddField("Completed:", x.anime_stats.completed, true) .AddField("Watching:", x.anime_stats.watching, true) .AddField("Dropped:", x.anime_stats.dropped, true); await Context.Channel.SendMessageAsync("", false, MAL.Build()); } catch (Exception) { await Context.Channel.SendMessageAsync("Couldn't find any user with that nickname!"); } }
Embed CreateKeepStarEmebed(KeepStarProgress progress) { EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.WithColor(Color.Gold); embedBuilder.WithThumbnailUrl("https://imageserver.eveonline.com/Render/35834_128.png"); embedBuilder.WithAuthor($"Operation Golden Throne - {progress.Complete * 100}%", "https://imageserver.eveonline.com/Corporation/98270640_128.png", "https://goonfleet.com/index.php/topic/269069-operation-golden-throne/"); embedBuilder.WithFooter("Dontations can be made at 1DQ1-A, B-7DFU or JITA 4-4."); double totalAssets = Math.Round(progress.AssetHistory[0].Item1 / 1000000000, 1); double escrow = Math.Round(progress.BuyOrdersEscrow / 1000000000, 1); EmbedFieldBuilder fieldBuilder = new EmbedFieldBuilder(); fieldBuilder.WithName($"Total Assets: {totalAssets.ToString("N1")}b ISK"); fieldBuilder.WithValue($"Buy orders in escrow: {escrow.ToString("N1")}b ISK"); embedBuilder.AddField(fieldBuilder); fieldBuilder = new EmbedFieldBuilder(); fieldBuilder.WithName("Currently needed: PI"); fieldBuilder.WithValue("P2: Viral Agent, Rocket Fuel, Polyaramids...\n⌴"); embedBuilder.AddField(fieldBuilder); double totalPI = Math.Round(progress.TotalPI / 1000000000, 1); double p1 = Math.Round(progress.P1 / 1000000000, 1); double p2 = Math.Round(progress.P2 / 1000000000, 1); double p3 = Math.Round(progress.P3 / 1000000000, 1); double p4 = Math.Round(progress.P4 / 1000000000, 1); fieldBuilder = new EmbedFieldBuilder(); fieldBuilder.WithName($"PI: {totalPI.ToString("N1")}b ISK"); fieldBuilder.WithIsInline(true); fieldBuilder.WithValue($"P1: {p1.ToString("N1")}b ISK\n" + $"P2: {p2.ToString("N1")}b ISK\n" + $"P3: {p3.ToString("N1")}b ISK\n" + $"P4: {p4.ToString("N1")}b ISK\n"); embedBuilder.AddField(fieldBuilder); double wallet = Math.Round(progress.Wallet / 1000000000, 1); fieldBuilder = new EmbedFieldBuilder(); fieldBuilder.WithName($"Wallet: {wallet.ToString("N1")}b ISK"); fieldBuilder.WithIsInline(true); string output = ""; for (int i = 0; i < progress.AssetHistory.Count; i++) { float walletHistory = progress.AssetHistory[i].Item1; double formated = Math.Round(walletHistory / 1000000000, 1); output += $"{progress.AssetHistory[i].Item2}: {formated.ToString("N1")}b ISK\n"; } fieldBuilder.WithValue(output); embedBuilder.AddField(fieldBuilder); return(embedBuilder.Build()); }
public async Task GameMessageTest([Remainder] string arg = "") { string[] gameInfos = arg.Split(','); EmbedBuilder embed = new EmbedBuilder(); embed.WithTitle(gameInfos[0]); if (gameInfos.Length > 1) { embed.WithThumbnailUrl(gameInfos[1]); } if (gameInfos.Length > 2) { embed.WithDescription(gameInfos[2]); } if (gameInfos.Length > 3) { embed.WithUrl(gameInfos[3]); } EmbedFieldBuilder fieldBuilder = new EmbedFieldBuilder(); fieldBuilder.WithName("Test Field"); fieldBuilder.WithValue(123456); embed.WithFields(fieldBuilder); await Context.Channel.SendMessageAsync("", false, embed.Build()); }
public async Task Help([Remainder] string message) { ModuleInfo moduleInfo = default; //loop through the commands modules available //and check for which one has the same name as what the user typed //assign moduleInfo the command if there is a match foreach (ModuleInfo command in BotConfig.Commands.Modules) { if (message == command.Name) { moduleInfo = command; } } //might be a pointless check if (message == moduleInfo.Name) { var field = new EmbedFieldBuilder { Name = "Module Parameters", Value = moduleInfo.Remarks }; //embed template var easyEmbed = new EasyEmbed() { AuthorName = $"Module Name: {moduleInfo.Name}", AuthorIcon = $"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/209/thinking-face_1f914.png", EmbedColor = Color.Purple, EmbedField = field }; //send the message await Context.Channel.SendMessageAsync(embed : easyEmbed.Build()); } }
public async Task Help() { var commandService = new CommandService(); await commandService.AddModulesAsync(Assembly.GetEntryAssembly()); var commands = commandService.Commands; var embed = new EmbedBuilder(); var normies = new EmbedFieldBuilder(); //normie commands normies.Name = "Commands"; foreach (CommandInfo command in commands) { if (command.CheckPreconditionsAsync(Context).GetAwaiter().GetResult().IsSuccess) { normies.Value += $"{command.Name}: {command.Summary}\n"; } } //add the field to the embed embed.AddField(normies); embed.Color = new Color(255, 255, 0); await ReplyAsync("", false, embed); }
/// <summary> /// Sends as many embeds as necessary based on a list of embed fields. Adhering to the maximum of 25 embed fields per embed /// </summary> /// <param name="title">The title applied to all embeds</param> /// <param name="embeds">List of embed field builders</param> /// <param name="description">The description applied to all embeds</param> public async static Task SendSafeEmbedList(this ISocketMessageChannel channel, string title, List <EmbedFieldBuilder> embeds, string description = null) { List <EmbedBuilder> embedMessages = new List <EmbedBuilder>(); EmbedBuilder CurrentBuilder = null; for (int i = 0; i < embeds.Count; i++) { if (i % 25 == 0) { CurrentBuilder = new EmbedBuilder { Color = BotCore.EmbedColor, Title = title }; if (!string.IsNullOrEmpty(description)) { CurrentBuilder.Description = description; } embedMessages.Add(CurrentBuilder); } EmbedFieldBuilder embed = embeds[i]; if (CurrentBuilder != null) { CurrentBuilder.AddField(embed); } } foreach (EmbedBuilder embedMessage in embedMessages) { await channel.SendEmbedAsync(embedMessage); } }
internal static async Task GenerateBountyFile(Player player, Area area, int i, ISocketMessageChannel chan) { if (i >= area.junctions.Count) { i = -1; } EmbedFieldBuilder field = i < 0 ? GetAreaBounties(area.name, area.AreaId) : null; if (field == null) { i++; } for (; i < area.junctions.Count && field == null; i++) { field = GetAreaBounties(area.junctions[i].destination, area.junctions[i].filePath); } if (field != null) { EmbedBuilder em = new EmbedBuilder() { Title = "Bounty Board", Description = "Bounty are creature who've grown in power by defeating a player or were born from another bounty." + Environment.NewLine + "Hunt down the bounty by finding it in it's area while being on or above their floor.", }; em.AddField(field); await player.NewUI(await chan.SendMessageAsync(embed: em.Build()), MsgType.BountyBoard, i.ToString()); } else { await chan.SendMessageAsync("There are no bounties on this board"); } }
private Embed CreateEmbed(YouTubeRecord record, YouTubeToCheck youtube) { var embed = new EmbedBuilder(); var author = new EmbedAuthorBuilder { Name = record.AuthorName, Url = record.AuthorUrl, IconUrl = record.AuthorIconUrl }; var publishedAt = TimeZoneInfo.ConvertTime(record.PublishedAt, Helpers.CentralTimeZone()); var footer = new EmbedFooterBuilder { Text = $"Posted on {publishedAt:MMM d, yyyy} at {publishedAt:H:mm} Central" }; var descriptionField = new EmbedFieldBuilder { Name = "Description", Value = record.VideoDescription, IsInline = false }; embed.Author = author; embed.Footer = footer; embed.Color = new Color((uint)youtube.EmbedColor); embed.ImageUrl = record.ImageUrl; embed.Title = record.VideoTitle; embed.Url = "https://www.youtube.com/watch?v=" + record.VideoId; embed.AddField(descriptionField); return(embed.Build()); }
public async Task ShowLastForms(int records = 5) { if (records <= 0) { await _replyservice.ReplyEmbedAsync(context : Context, message : "The number of selected records must be positive."); return; } var forms = VerificationFormDataHandler.GetVerificationFormsByGuild(Context.Guild.Id, records); var embed = new EmbedBuilder { Author = new EmbedAuthorBuilder { Name = $"Showing last {forms.Count} verification forms", IconUrl = Context.Client.CurrentUser.GetAvatarUrl() }, Color = Color.Blue, Timestamp = DateTimeOffset.UtcNow }; foreach (var form in forms) { var field = new EmbedFieldBuilder { Name = Context.Guild.GetUser(form.Verified).Username, Value = $"Verified by {form.Verifier} at {form.IssuedUtc} UTC.\n" + (form.IsApproved.HasValue ? (form.IsApproved.Value ? "Approved" : "Denied") + $"by { form.Approver } at {form.ApprovedUtc} UTC." : "Pending approval...") }; embed.AddField(field); } await _replyservice.ReplyEmbedAsync(Context, embed); }
public async Task HelpAsync() { EmbedBuilder embed = new EmbedBuilder() .WithColor(SecurityInfo.botColor) .WithTitle(SecurityInfo.botName); EmbedFieldBuilder prefix = new EmbedFieldBuilder() .WithIsInline(false) .WithName("Prefix") .WithValue("\\" + "\n**or**\n" + Context.Client.CurrentUser.Mention + "\n\u200b"); embed.AddField(prefix); EmbedFieldBuilder field = new EmbedFieldBuilder() .WithIsInline(false) .WithName("Commands") .WithValue( "ping\n" + " - Returns the bot's Server and API latencies\n\n" + "setchannel [channel mention/channel ID]\n" + " - Sets the counting channel\n\n" + "getcount [user mention/user ID (optional)]\n" + " - Gets the number of counting messages sent by the user and their rank on the leaderboard\n\n" + "counter\n" + " - Gets a leaderboard of the top 5 users\n\n" + "currentcount\n" + " - Gets the current counter value" ); embed.AddField(field); await Context.Channel.SendMessageAsync(embed : embed.Build()); }
public async Task ShowUserPermissions() { var users = DiscordUserDataHandler.GetGuildUsers(Context.Guild.Id); if (users.Count < 1) { await _replyservice.ReplyEmbedAsync(context : Context, message : "No users have special permissions for this bot."); return; } var embed = new EmbedBuilder { Author = new EmbedAuthorBuilder { Name = $"Showing user permissions.", IconUrl = Context.Client.CurrentUser.GetAvatarUrl() }, Color = Color.Blue, Timestamp = DateTimeOffset.UtcNow }; users = users.OrderByDescending(x => Convert.ChangeType(x.PermissionLevel, x.PermissionLevel.GetTypeCode())).ToList(); foreach (var user in users) { string permLevelString; switch (user.PermissionLevel) { case Resources.Database.Model.DiscordGuildUser.PermissionLevels.Verify: permLevelString = "Verifier"; break; case Resources.Database.Model.DiscordGuildUser.PermissionLevels.Approve: permLevelString = "Approver"; break; default: permLevelString = "None"; break; } var userObject = Context.Guild.GetUser(user.UserId); var usernameString = $"User Not Found (ID {user.UserId.ToString()})"; if (userObject != null) { usernameString = userObject.Nickname ?? userObject.Username; } var field = new EmbedFieldBuilder { Name = usernameString, Value = "Permission: " + permLevelString }; embed.AddField(field); } await _replyservice.ReplyEmbedAsync(Context, embed); }
public async Task Purge(int ID) { IUserMessage msg = await Context.Channel.SendMessageAsync("Fetching Data..."); try { PokeAPI.Pokemon p = await DataFetcher.GetApiObject <PokeAPI.Pokemon>(ID); EmbedBuilder builder = new EmbedBuilder() { Title = "Pokemon Request by ID", Color = Color.DarkGreen, ThumbnailUrl = p.Sprites.FrontMale }; builder.Description = $"{FormatHelper.Capatalize(p.Name)} the {FormatHelper.Capatalize((await DataFetcher.GetApiObject<PokemonSpecies>(ID)).Genera[2].Name)}"; EmbedFieldBuilder field = new EmbedFieldBuilder() { Name = "Base Stats", IsInline = true }; foreach (PokemonStats stat in p.Stats) { field.Value += $"{FormatHelper.Capatalize(stat.Stat.Name)}: {stat.BaseValue.ToString()}\n"; } builder.AddField(field); await msg.ModifyAsync(x => { x.Content = ""; x.Embed = builder.Build(); }); } catch { await msg.ModifyAsync(x => x.Content = "Could find pokemon with ID: " + ID); } }
private async Task QueueAsync() { var player = _lavaNode.GetPlayer(Context.Guild); //Create an embed using that image url var builder = new EmbedBuilder(); builder.WithTitle("Music Queue"); builder.WithColor(3447003); builder.WithDescription(""); TimeSpan totalQueueTime = new TimeSpan(); foreach (LavaTrack track in player.Queue) { totalQueueTime += track.Duration; } builder.WithFooter($"Total queue length: {totalQueueTime}"); if (player.Queue.Count == 0) { await ReplyAsync("Queue is empty", false); return; } for (var i = 0; i < player.Queue.Count; i++) { var lavaTrack = player.Queue.ElementAt(i); var fieldBuilder = new EmbedFieldBuilder { Name = $"{i+1} - " + lavaTrack.Title, Value = lavaTrack.Duration }; builder.AddField(fieldBuilder); } await ReplyAsync("", false, builder.Build()); }
public async Task TagAsync(string tagName) { var requestName = tagName; requestName.Replace(" ", "%20"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.barbershoptags.com/api.php?fldlist=Title,SungBy,SheetMusic&SheetMusic=Yes&q=" + tagName); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); request.Credentials = CredentialCache.DefaultCredentials; Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); XmlSerializer serializer = new XmlSerializer(typeof(Tags)); Tags tags = (Tags)serializer.Deserialize(readStream); var embed = new EmbedBuilder(); embed.WithTitle("Found " + tags.TagList.Count + " results when searching for " + tagName); foreach (var item in tags.TagList) { var builder = new EmbedFieldBuilder(); builder.WithName(item.Title); string content = "[Sheet Music](" + item.SheetMusic + ")"; builder.WithValue(content); embed.WithFields(builder); } await ReplyAsync("", false, embed.Build()); response.Close(); readStream.Close(); }
public static async Task <bool> SetStateAsync(StateInfo info) { IUserMessage msg = await modLogsDatabase.ModLogs.GetModLogAsync(info.Guild, info.LogId); if (msg == null || msg.Embeds.Count == 0) { return(false); } EmbedBuilder e = msg.Embeds.ToList()[0].ToEmbedBuilder(); List <EmbedFieldBuilder> fields = e.Fields.ToList(); EmbedBuilder embed = new EmbedBuilder() .WithColor(e.Color ?? SecurityInfo.botColor) .WithTitle(e.Title) .WithCurrentTimestamp(); EmbedFieldBuilder field = e.Fields.FirstOrDefault(x => x.Name.Contains(info.StateName)); if (field == null) { return(false); } int index = fields.IndexOf(field); fields.Remove(field); field.WithValue(info.StateValue); fields.Insert(index, field); embed.WithFields(fields); await msg.ModifyAsync(x => x.Embed = embed.Build()); return(true); }