diff --git a/src/NadekoBot/Modules/Searches/Commands/OMDB/OmdbProvider.cs b/src/NadekoBot/Modules/Searches/Commands/OMDB/OmdbProvider.cs index a4fffa9d..02373bb3 100644 --- a/src/NadekoBot/Modules/Searches/Commands/OMDB/OmdbProvider.cs +++ b/src/NadekoBot/Modules/Searches/Commands/OMDB/OmdbProvider.cs @@ -1,4 +1,6 @@ -ο»Ώusing Newtonsoft.Json; +ο»Ώusing Discord; +using Discord.API; +using Newtonsoft.Json; using System; using System.Net.Http; using System.Threading.Tasks; @@ -32,6 +34,17 @@ namespace NadekoBot.Modules.Searches.Commands.OMDB public string Plot { get; set; } public string Poster { get; set; } + public Embed GetEmbed() => + new EmbedBuilder().WithColor(NadekoBot.OkColor) + .WithTitle(Title) + .WithUrl($"http://www.imdb.com/title/{ImdbId}/") + .WithDescription(Plot) + .AddField(efb => efb.WithName("Rating").WithValue(ImdbRating).WithIsInline(true)) + .AddField(efb => efb.WithName("Genre").WithValue(Genre).WithIsInline(true)) + .AddField(efb => efb.WithName("Year").WithValue(Year).WithIsInline(true)) + .WithImage(eib => eib.WithUrl(Poster)) + .Build(); + public override string ToString() => $@"`Title:` {Title} `Year:` {Year} diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/src/NadekoBot/Modules/Searches/Searches.cs index 88865a41..551f61dc 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/src/NadekoBot/Modules/Searches/Searches.cs @@ -59,10 +59,13 @@ namespace NadekoBot.Modules.Searches var result = (await NadekoBot.Google.GetVideosByKeywordsAsync(query, 1)).FirstOrDefault(); if (string.IsNullOrWhiteSpace(result)) { - await channel.SendMessageAsync("No results found for that query."); + await channel.SendErrorAsync("No results found for that query.").ConfigureAwait(false); return; } + await channel.SendMessageAsync(result).ConfigureAwait(false); + + //await channel.EmbedAsync(new Discord.API.Embed() { Video = new Discord.API.EmbedVideo() { Url = result.Replace("watch?v=", "embed/") }, Color = NadekoBot.OkColor }).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -77,10 +80,10 @@ namespace NadekoBot.Modules.Searches var movie = await OmdbProvider.FindMovie(query); if (movie == null) { - await channel.SendMessageAsync("Failed to find that movie.").ConfigureAwait(false); + await channel.SendErrorAsync("Failed to find that movie.").ConfigureAwait(false); return; } - await channel.SendMessageAsync(movie.ToString()).ConfigureAwait(false); + await channel.EmbedAsync(movie.GetEmbed()).ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -90,9 +93,8 @@ namespace NadekoBot.Modules.Searches var channel = (ITextChannel)umsg.Channel; using (var http = new HttpClient()) { - await channel.SendMessageAsync(JObject.Parse( - await http.GetStringAsync("http://www.random.cat/meow").ConfigureAwait(false))["file"].ToString()) - .ConfigureAwait(false); + var res = JObject.Parse(await http.GetStringAsync("http://www.random.cat/meow").ConfigureAwait(false)); + await channel.SendMessageAsync(res["file"].ToString()).ConfigureAwait(false); } } @@ -103,7 +105,8 @@ namespace NadekoBot.Modules.Searches var channel = (ITextChannel)umsg.Channel; using (var http = new HttpClient()) { - await channel.SendMessageAsync("http://random.dog/" + await http.GetStringAsync("http://random.dog/woof").ConfigureAwait(false)).ConfigureAwait(false); + await channel.SendMessageAsync("http://random.dog/" + await http.GetStringAsync("http://random.dog/woof") + .ConfigureAwait(false)).ConfigureAwait(false); } } @@ -128,11 +131,12 @@ namespace NadekoBot.Modules.Searches { if (exception.Message.Contains("403 (Forbidden)")) { - await channel.SendMessageAsync("Daily limit reached!"); + await channel.SendErrorAsync("Daily limit reached!"); } else { - await channel.SendMessageAsync("Something went wrong."); + await channel.SendErrorAsync("Something went wrong."); + _log.Error(exception); } } } @@ -160,11 +164,12 @@ namespace NadekoBot.Modules.Searches { if (exception.Message.Contains("403 (Forbidden)")) { - await channel.SendMessageAsync("Daily limit reached!"); + await channel.SendErrorAsync("Daily limit reached!"); } else { - await channel.SendMessageAsync("Something went wrong."); + await channel.SendErrorAsync("Something went wrong."); + _log.Error(exception); } } } @@ -179,7 +184,7 @@ namespace NadekoBot.Modules.Searches if (string.IsNullOrWhiteSpace(ffs)) return; - await channel.SendMessageAsync(await NadekoBot.Google.ShortenUrl($"")) + await channel.SendConfirmAsync(await NadekoBot.Google.ShortenUrl($"")) .ConfigureAwait(false); } @@ -190,7 +195,19 @@ namespace NadekoBot.Modules.Searches if (string.IsNullOrWhiteSpace(arg)) return; - await msg.Channel.SendMessageAsync(await NadekoBot.Google.ShortenUrl(arg).ConfigureAwait(false)); + var shortened = await NadekoBot.Google.ShortenUrl(arg).ConfigureAwait(false); + + if (shortened == arg) + { + await msg.Channel.SendErrorAsync("Failed to shorten that url."); + } + + await msg.Channel.EmbedAsync(new EmbedBuilder().WithColor(NadekoBot.OkColor) + .AddField(efb => efb.WithName("Original Url") + .WithValue($"<{arg}>")) + .AddField(efb => efb.WithName("Short Url") + .WithValue($"<{shortened}>")) + .Build()); } [NadekoCommand, Usage, Description, Aliases] @@ -198,12 +215,12 @@ namespace NadekoBot.Modules.Searches public async Task Google(IUserMessage umsg, [Remainder] string terms = null) { var channel = (ITextChannel)umsg.Channel; - - + terms = terms?.Trim(); if (string.IsNullOrWhiteSpace(terms)) return; - await channel.SendMessageAsync($"https://google.com/search?q={ WebUtility.UrlEncode(terms).Replace(' ', '+') }") + + await channel.SendConfirmAsync($"https://google.com/search?q={ WebUtility.UrlEncode(terms).Replace(' ', '+') }") .ConfigureAwait(false); } @@ -215,7 +232,7 @@ namespace NadekoBot.Modules.Searches var arg = name; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ `Please enter a card name to search for.`").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a card name to search for.").ConfigureAwait(false); return; } @@ -231,18 +248,26 @@ namespace NadekoBot.Modules.Searches var items = JArray.Parse(response).Shuffle().ToList(); if (items == null) throw new KeyNotFoundException("Cannot find a card by that name"); - var msg = $@"```css -[β˜• Magic The Gathering]: {items[0]["name"].ToString()} -[Store URL]: {await NadekoBot.Google.ShortenUrl(items[0]["store_url"].ToString())} -[Cost]: {items[0]["cost"].ToString()} -[Description]: {items[0]["text"].ToString()} -``` -{items[0]["editions"][0]["image_url"].ToString()}"; - await channel.SendMessageAsync(msg).ConfigureAwait(false); + var item = items[0]; + var storeUrl = await NadekoBot.Google.ShortenUrl(item["store_url"].ToString()); + var cost = item["cost"].ToString(); + var desc = item["text"].ToString(); + var types = String.Join(",\n", item["types"].ToObject()); + var img = item["editions"][0]["image_url"].ToString(); + var embed = new EmbedBuilder().WithColor(NadekoBot.OkColor) + .WithTitle(item["name"].ToString()) + .WithDescription(desc) + .WithImage(eib => eib.WithUrl(img)) + .AddField(efb => efb.WithName("Store Url").WithValue(storeUrl).WithIsInline(true)) + .AddField(efb => efb.WithName("Cost").WithValue(cost).WithIsInline(true)) + .AddField(efb => efb.WithName("Types").WithValue(types).WithIsInline(true)); + //.AddField(efb => efb.WithName("Store Url").WithValue(await NadekoBot.Google.ShortenUrl(items[0]["store_url"].ToString())).WithIsInline(true)); + + await channel.EmbedAsync(embed.Build()).ConfigureAwait(false); } catch { - await channel.SendMessageAsync($"πŸ’’ Error could not find the card {arg}").ConfigureAwait(false); + await channel.SendErrorAsync($"Error could not find the card '{arg}'.").ConfigureAwait(false); } } } @@ -255,13 +280,13 @@ namespace NadekoBot.Modules.Searches var arg = name; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ `Please enter a card name to search for.`").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a card name to search for.").ConfigureAwait(false); return; } if (string.IsNullOrWhiteSpace(NadekoBot.Credentials.MashapeKey)) { - await channel.SendMessageAsync("πŸ’’ `Bot owner didn't specify MashapeApiKey. You can't use this functionality.`").ConfigureAwait(false); + await channel.SendErrorAsync ("Bot owner didn't specify MashapeApiKey. You can't use this functionality.").ConfigureAwait(false); return; } @@ -301,7 +326,8 @@ namespace NadekoBot.Modules.Searches } catch (Exception ex) { - await channel.SendMessageAsync($"πŸ’’ Error {ex.Message}").ConfigureAwait(false); + await channel.SendErrorAsync($"Error occured.").ConfigureAwait(false); + _log.Error(ex); } } } @@ -314,14 +340,14 @@ namespace NadekoBot.Modules.Searches if (string.IsNullOrWhiteSpace(NadekoBot.Credentials.MashapeKey)) { - await channel.SendMessageAsync("πŸ’’ `Bot owner didn't specify MashapeApiKey. You can't use this functionality.`").ConfigureAwait(false); + await channel.SendErrorAsync("Bot owner didn't specify MashapeApiKey. You can't use this functionality.").ConfigureAwait(false); return; } var arg = query; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ `Please enter a sentence.`").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a sentence.").ConfigureAwait(false); return; } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); @@ -334,18 +360,15 @@ namespace NadekoBot.Modules.Searches try { var embed = new EmbedBuilder() - .WithTitle("Young Padawan") .WithUrl("http://www.yodaspeak.co.uk/") .WithAuthor(au => au.WithName("Yoda").WithIconUrl("http://www.yodaspeak.co.uk/yoda-small1.gif")) - .WithDescription("Seek advice, you must!") - .WithThumbnail(th => th.WithUrl("http://i.imgur.com/62Uh4u6.jpg")) - .AddField(fb => fb.WithName($"🌍 **{umsg.Author.Username}**").WithValue($"{res.ToString()}").WithIsInline(false)) + .WithDescription(res) .WithColor(NadekoBot.OkColor); await channel.EmbedAsync(embed.Build()).ConfigureAwait(false); } catch { - await channel.SendMessageAsync("πŸ’’ Failed to yodify your sentence.").ConfigureAwait(false); + await channel.SendErrorAsync("Failed to yodify your sentence.").ConfigureAwait(false); } } } @@ -358,14 +381,14 @@ namespace NadekoBot.Modules.Searches if (string.IsNullOrWhiteSpace(NadekoBot.Credentials.MashapeKey)) { - await channel.SendMessageAsync("πŸ’’ `Bot owner didn't specify MashapeApiKey. You can't use this functionality.`").ConfigureAwait(false); + await channel.SendErrorAsync("Bot owner didn't specify MashapeApiKey. You can't use this functionality.").ConfigureAwait(false); return; } var arg = query; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ `Please enter a search term.`").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a search term.").ConfigureAwait(false); return; } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); @@ -377,15 +400,19 @@ namespace NadekoBot.Modules.Searches try { var items = JObject.Parse(res); - var sb = new StringBuilder(); - sb.AppendLine($"`Term:` {items["list"][0]["word"].ToString()}"); - sb.AppendLine($"`Definition:` {items["list"][0]["definition"].ToString()}"); - sb.Append($"`Link:` <{await NadekoBot.Google.ShortenUrl(items["list"][0]["permalink"].ToString()).ConfigureAwait(false)}>"); - await channel.SendMessageAsync(sb.ToString()); + var item = items["list"][0]; + var word = item["word"].ToString(); + var def = item["definition"].ToString(); + var link = item["permalink"].ToString(); + var embed = new EmbedBuilder().WithColor(NadekoBot.OkColor) + .WithUrl(link) + .WithAuthor(eab => eab.WithIconUrl("http://i.imgur.com/nwERwQE.jpg").WithName(word)) + .WithDescription(def); + await channel.EmbedAsync(embed.Build()).ConfigureAwait(false); } catch { - await channel.SendMessageAsync("πŸ’’ Failed finding a definition for that term.").ConfigureAwait(false); + await channel.SendErrorAsync("Failed finding a definition for that term.").ConfigureAwait(false); } } } @@ -399,12 +426,12 @@ namespace NadekoBot.Modules.Searches var arg = query; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ `Please enter a search term.`").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a search term.").ConfigureAwait(false); return; } if (string.IsNullOrWhiteSpace(NadekoBot.Credentials.MashapeKey)) { - await channel.SendMessageAsync("πŸ’’ `Bot owner didn't specify MashapeApiKey. You can't use this functionality.`").ConfigureAwait(false); + await channel.SendErrorAsync("Bot owner didn't specify MashapeApiKey. You can't use this functionality.").ConfigureAwait(false); return; } @@ -420,14 +447,20 @@ namespace NadekoBot.Modules.Searches try { var items = JObject.Parse(res); - var str = $@"`Hashtag:` {items["defs"]["def"]["hashtag"].ToString()} -`Definition:` {items["defs"]["def"]["text"].ToString()} -`Link:` <{await NadekoBot.Google.ShortenUrl(items["defs"]["def"]["uri"].ToString()).ConfigureAwait(false)}>"; - await channel.SendMessageAsync(str); + var item = items["defs"]["def"]; + var hashtag = item["hashtag"].ToString(); + var link = item["uri"].ToString(); + var desc = item["text"].ToString(); + await channel.EmbedAsync(new EmbedBuilder().WithColor(NadekoBot.OkColor) + .WithAuthor(eab => eab.WithUrl(link) + .WithIconUrl("http://res.cloudinary.com/urbandictionary/image/upload/a_exif,c_fit,h_200,w_200/v1394975045/b8oszuu3tbq7ebyo7vo1.jpg") + .WithName(query)) + .WithDescription(desc) + .Build()); } catch { - await channel.SendMessageAsync("πŸ’’ Failed finding a definition for that tag.").ConfigureAwait(false); + await channel.SendErrorAsync("Failed finding a definition for that tag.").ConfigureAwait(false); } } @@ -441,7 +474,9 @@ namespace NadekoBot.Modules.Searches var response = await http.GetStringAsync("http://catfacts-api.appspot.com/api/facts").ConfigureAwait(false); if (response == null) return; - await channel.SendMessageAsync($"🐈 `{JObject.Parse(response)["facts"][0].ToString()}`").ConfigureAwait(false); + + var fact = JObject.Parse(response)["facts"][0].ToString(); + await channel.SendConfirmAsync("🐈fact", fact).ConfigureAwait(false); } } @@ -453,7 +488,7 @@ namespace NadekoBot.Modules.Searches if (usr == null) usr = umsg.Author; - await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={usr.AvatarUrl}").ConfigureAwait(false); + await channel.SendConfirmAsync($"https://images.google.com/searchbyimage?image_url={usr.AvatarUrl}").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -465,7 +500,7 @@ namespace NadekoBot.Modules.Searches if (string.IsNullOrWhiteSpace(imageLink)) return; - await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={imageLink}").ConfigureAwait(false); + await channel.SendConfirmAsync($"https://images.google.com/searchbyimage?image_url={imageLink}").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -477,7 +512,7 @@ namespace NadekoBot.Modules.Searches tag = tag?.Trim() ?? ""; var link = await GetSafebooruImageLink(tag).ConfigureAwait(false); if (link == null) - await channel.SendMessageAsync("`No results.`"); + await channel.SendErrorAsync("No results."); else await channel.SendMessageAsync(link).ConfigureAwait(false); } @@ -496,7 +531,7 @@ namespace NadekoBot.Modules.Searches var result = await http.GetStringAsync("https://en.wikipedia.org//w/api.php?action=query&format=json&prop=info&redirects=1&formatversion=2&inprop=url&titles=" + Uri.EscapeDataString(query)); var data = JsonConvert.DeserializeObject(result); if (data.Query.Pages[0].Missing) - await channel.SendMessageAsync("`That page could not be found.`"); + await channel.SendErrorAsync("That page could not be found."); else await channel.SendMessageAsync(data.Query.Pages[0].FullUrl); } @@ -536,12 +571,12 @@ namespace NadekoBot.Modules.Searches str += new NadekoRandom().Next(); foreach (var usr in allUsrsArray) { - await (await (usr as IGuildUser).CreateDMChannelAsync()).SendMessageAsync(str).ConfigureAwait(false); + await (await (usr as IGuildUser).CreateDMChannelAsync()).SendConfirmAsync(str).ConfigureAwait(false); } } catch (Exception ex) { - Console.WriteLine(ex); + _log.Error(ex); } } @@ -554,7 +589,7 @@ namespace NadekoBot.Modules.Searches var usr = umsg.MentionedUsers.FirstOrDefault(); if (usr == null) { - await channel.SendMessageAsync("Invalid user specified.").ConfigureAwait(false); + await channel.SendErrorAsync("Invalid user specified.").ConfigureAwait(false); return; } await channel.SendMessageAsync(await NadekoBot.Google.ShortenUrl(usr.AvatarUrl).ConfigureAwait(false)).ConfigureAwait(false); @@ -576,23 +611,23 @@ namespace NadekoBot.Modules.Searches } } + public enum BfGame + { + Bf3, Bf4 + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task BFO(IUserMessage umsg, [Remainder] string game = null) + public async Task BFO(IUserMessage umsg, [Remainder] BfGame game) { var channel = (ITextChannel)umsg.Channel; - if (string.IsNullOrWhiteSpace(game)) - { - await channel.SendMessageAsync("πŸ’’ Please enter a game `(bf3, bf4)`").ConfigureAwait(false); - return; - } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); using (var http = new HttpClient()) { http.DefaultRequestHeaders.Clear(); try { - if (game.Equals("bf3", StringComparison.OrdinalIgnoreCase)) + if (game == BfGame.Bf3) { var res = await http.GetStringAsync($"http://api.bf3stats.com/global/onlinestats/").ConfigureAwait(false); var items = JObject.Parse(res); @@ -610,7 +645,7 @@ PC: βœ”[{pc.ToString()}] ```"; await channel.SendMessageAsync(response); } - else if (game.Equals("bf4", StringComparison.OrdinalIgnoreCase)) + else if (game == BfGame.Bf4) { var res = await http.GetStringAsync($"http://api.bf4stats.com/api/onlinePlayers?output=json").ConfigureAwait(false); var items = JObject.Parse(res); @@ -625,29 +660,31 @@ PC: βœ”[{pc.ToString()}] sb.AppendLine("```css"); sb.AppendLine($"[β˜• BF4 Status: {status}]"); - foreach (var i in items) { + foreach (var i in items) + { var plat = items[i.Key]; sb.AppendLine($"{plat["label"]}: βœ”[{plat["count"]}] / ↑[{plat["peak24"]}]"); } sb.Append("```"); - await channel.SendMessageAsync(sb.ToString()); + await channel.SendConfirmAsync(sb.ToString()); } - } catch + } + catch { - await channel.SendMessageAsync($"πŸ’’ BF3/BF4 API is most likely not working at the moment or could not find {game}.").ConfigureAwait(false); + await channel.SendErrorAsync($"BF3/BF4 API is most likely not working at the moment or could not find {game}.").ConfigureAwait(false); } } } [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task BFU(IUserMessage umsg, string platform, string game, [Remainder] string query = null) + public async Task BFU(IUserMessage umsg, string platform, BfGame game, [Remainder] string query = null) { var channel = (ITextChannel)umsg.Channel; - if (string.IsNullOrWhiteSpace(platform) || string.IsNullOrWhiteSpace(game) || string.IsNullOrWhiteSpace(query)) + if (string.IsNullOrWhiteSpace(platform) || string.IsNullOrWhiteSpace(query)) { - await channel.SendMessageAsync("πŸ’’ Please enter a platform `(pc, xbox, ps3, xone, ps4)`, game `(bf3, bf4)`, followed by a search query.").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a platform `(pc, xbox, ps3, xone, ps4)`, game `(bf3, bf4)`, followed by a search query.").ConfigureAwait(false); return; } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); @@ -656,7 +693,7 @@ PC: βœ”[{pc.ToString()}] http.DefaultRequestHeaders.Clear(); try { - if (game.Equals("bf3", StringComparison.OrdinalIgnoreCase)) + if (game == BfGame.Bf3) { var res = await http.GetStringAsync($"http://api.bf3stats.com/{Uri.EscapeUriString(platform)}/playerlist/players={Uri.EscapeUriString(query)}?output=json").ConfigureAwait(false); var items = JObject.Parse(res); @@ -688,7 +725,7 @@ Accuracy: %[{playerGlobal_Accuracy.ToString()}] ELO: [{playerGlobal_ELO.ToString()}] ```"; await channel.SendMessageAsync(response); - } else if (game.Equals("bf4", StringComparison.OrdinalIgnoreCase)) + } else if (game == BfGame.Bf4) { var res = await http.GetStringAsync($"http://api.bf4stats.com/api/playerInfo?plat={Uri.EscapeUriString(platform)}&name={Uri.EscapeUriString(query)}&output=json").ConfigureAwait(false); var items = JObject.Parse(res); @@ -725,7 +762,7 @@ ELO: [{playerELO.ToString()}] } catch { - await channel.SendMessageAsync($"πŸ’’ BF3/BF4 API is most likely not working at the moment or could not find {query}.").ConfigureAwait(false); + await channel.SendErrorAsync($"BF3/BF4 API is most likely not working at the moment or could not find {query}.").ConfigureAwait(false); } } } @@ -737,7 +774,7 @@ ELO: [{playerELO.ToString()}] var channel = (ITextChannel)umsg.Channel; if (string.IsNullOrWhiteSpace(target) || string.IsNullOrWhiteSpace(query)) { - await channel.SendMessageAsync("πŸ’’ Please enter a target wikia, followed by search query.").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter a target wikia, followed by search query.").ConfigureAwait(false); return; } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); @@ -756,7 +793,7 @@ ELO: [{playerELO.ToString()}] } catch { - await channel.SendMessageAsync($"πŸ’’ Failed finding `{query}`.").ConfigureAwait(false); + await channel.SendErrorAsync($"Failed finding `{query}`.").ConfigureAwait(false); } } } @@ -769,7 +806,7 @@ ELO: [{playerELO.ToString()}] var arg = query; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ Please enter a `ip:port`.").ConfigureAwait(false); + await channel.SendErrorAsync("πŸ’’ Please enter a `ip:port`.").ConfigureAwait(false); return; } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); @@ -793,7 +830,7 @@ ELO: [{playerELO.ToString()}] } catch { - await channel.SendMessageAsync($"πŸ’’ Failed finding `{arg}`.").ConfigureAwait(false); + await channel.SendErrorAsync($"Failed finding `{arg}`.").ConfigureAwait(false); } } } @@ -806,7 +843,7 @@ ELO: [{playerELO.ToString()}] var arg = query; if (string.IsNullOrWhiteSpace(arg)) { - await channel.SendMessageAsync("πŸ’’ Please enter a `ip:port`.").ConfigureAwait(false); + await channel.SendErrorAsync("Please enter `ip:port`.").ConfigureAwait(false); return; } await umsg.Channel.TriggerTypingAsync().ConfigureAwait(false); @@ -833,7 +870,7 @@ ELO: [{playerELO.ToString()}] } catch { - await channel.SendMessageAsync($"πŸ’’ Failed finding server `{arg}`.").ConfigureAwait(false); + await channel.SendErrorAsync($"Failed finding server `{arg}`.").ConfigureAwait(false); } } } @@ -841,7 +878,7 @@ ELO: [{playerELO.ToString()}] public static async Task ValidateQuery(ITextChannel ch, string query) { if (!string.IsNullOrEmpty(query.Trim())) return true; - await ch.SendMessageAsync("Please specify search parameters.").ConfigureAwait(false); + await ch.SendErrorAsync("Please specify search parameters.").ConfigureAwait(false); return false; } }