Beispiel #1
0
        public async Task Currency(CommandContext ctx, string baseCur, string targetCur, double amount = 1)
        {
            using (var wc = new WebClient())
            {
                try
                {
                    var response = JsonConvert.DeserializeObject <ExchangeRateApiResponse>(wc.DownloadString($"https://api.exchangeratesapi.io/latest?base={baseCur.ToUpper()}"));
                    if (response.Rates.ContainsKey(targetCur.ToUpper()) || string.Equals(targetCur, "ALL", StringComparison.OrdinalIgnoreCase))
                    {
                        var embed = new ModernEmbedBuilder
                        {
                            Title = await ctx.Lang("currency.title"),
                            Url   = "https://exchangeratesapi.io/",
                        }.AddGeneratedForFooter(ctx);

                        embed.AddField($"{amount} {response.Base}",
                                       string.Equals(targetCur, "ALL", StringComparison.OrdinalIgnoreCase)
                                ? string.Join("\n", response.Rates.Select(x => $"**{x.Value}** {x.Key}"))
                                : $"**{response.Rates[targetCur.ToUpper()]}** {targetCur.ToUpper()}");

                        await embed.Send(ctx.Message.Channel);
                    }
                    else
                    {
                        await ctx.RespondAsync(await ctx.Lang("currency.badTarget"));
                    }
                }
                catch (Exception)
                {
                    await ctx.RespondAsync(await ctx.Lang("currency.badBase"));
                }
            }
        }
Beispiel #2
0
 public static ModernEmbedBuilder AddGeneratedForFooter(this ModernEmbedBuilder embed, CommandContext ctx,
                                                        bool defaultColor = true)
 {
     embed.Timestamp  = DuckTimestamp.Now;
     embed.FooterText = ctx.Lang("global.footer").GetAwaiter().GetResult().Replace("{user}", ctx.User.Username);
     embed.FooterIcon = ctx.User.AvatarUrl;
     return(embed);
 }
Beispiel #3
0
 public HelpFormatter(CommandContext ctx) : base(ctx)
 {
     Ctx          = ctx;
     KuvuGuild    = ctx.Guild.GetKuvuGuild().GetAwaiter().GetResult();
     EmbedBuilder = new ModernEmbedBuilder()
     {
         Title = "Command list"
     }.AddGeneratedForFooter(ctx);
 }
Beispiel #4
0
 public HelpFormatter(CommandContext ctx) : base(ctx)
 {
     Ctx          = ctx;
     Guild        = ctx.Guild;
     EmbedBuilder = new ModernEmbedBuilder
     {
         Title = "Command Help",
         Color = DiscordColor.Purple
     }.AddGeneratedForFooter(ctx);
 }
Beispiel #5
0
        private static async Task Log(string emoji, string message, KuvuGuild kuvuGuild, DiscordChannel discordChannel, DiscordUser user, List <DuckField> fields = null, string url = null)
        {
            var embed = new ModernEmbedBuilder
            {
                Url       = url,
                Title     = $"{emoji} | {message}",
                Color     = Program.Config.EmbedColor,
                Timestamp = DuckTimestamp.Now,
                Fields    = fields
            };

            if (user != null)
            {
                embed.Author = ($"{user.Name()} | {user.Id}", null, user.AvatarUrl ?? user.DefaultAvatarUrl);
            }
            await embed.Send(discordChannel);
        }
Beispiel #6
0
        public async Task Dog(CommandContext ctx, [Description("Dog breed, if null random")] string breed = null)
        {
            await ctx.Channel.TriggerTypingAsync();

            var embed = new ModernEmbedBuilder
            {
                Title = breed == null ? await ctx.Lang("dog.random") : (await ctx.Lang("dog.randomBreed")).Replace("{breed}", breed),
            }.AddGeneratedForFooter(ctx);
            var url = breed == null ? "https://dog.ceo/api/breeds/image/random" : $"https://dog.ceo/api/breed/{breed}/images/random";

            WebResponse response = null;

            try
            {
                var request = WebRequest.Create(url);
                response = await request.GetResponseAsync();
            }
            catch (WebException ex)
            {
                if (ex.Response != null)
                {
                    response = (HttpWebResponse)ex.Response;
                }
            }

            using (var responseStream = response.GetResponseStream())
                using (var reader = new StreamReader(responseStream))
                {
                    var dogresponse = JsonConvert.DeserializeObject <DogApiResponse>(await reader.ReadToEndAsync());

                    if (dogresponse.Status == "success")
                    {
                        embed.ImageUrl = dogresponse.Message;
                    }
                    else
                    {
                        CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
                        TextInfo    textInfo    = cultureInfo.TextInfo;
                        embed.AddField($"{textInfo.ToTitleCase(dogresponse.Status)} {dogresponse.Code}", dogresponse.Message);
                    }
                    await embed.Send(ctx.Channel);

                    response.Close(); response.Dispose();
                }
        }