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