예제 #1
0
        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();
        }
예제 #2
0
        // 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());
        }
예제 #3
0
        /// <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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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());
        }
예제 #7
0
        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());
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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());
        }
예제 #11
0
        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);
        }
예제 #13
0
 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);
 }
예제 #14
0
        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);
        }
예제 #15
0
        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");
        }
예제 #16
0
파일: utilites.cs 프로젝트: Qzername/WeX
        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!");
            }
        }
예제 #17
0
        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());
        }
예제 #18
0
        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());
        }
예제 #19
0
        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());
            }
        }
예제 #20
0
        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);
        }
예제 #21
0
        /// <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);
            }
        }
예제 #22
0
        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");
            }
        }
예제 #23
0
        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);
        }
예제 #25
0
        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);
        }
예제 #27
0
            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);
                }
            }
예제 #28
0
    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());
    }
예제 #29
0
        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();
        }
예제 #30
0
        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);
        }