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