Pretty terrible ~define added

This commit is contained in:
Kwoth 2016-12-25 17:46:36 +01:00
parent 4be7000381
commit 718c82a891
3 changed files with 72 additions and 0 deletions

View File

@ -472,6 +472,42 @@ namespace NadekoBot.Modules.Searches
} }
} }
[NadekoCommand, Usage, Description, Aliases]
[RequireContext(ContextType.Guild)]
public async Task Define(IUserMessage msg, [Remainder] string word)
{
var channel = (ITextChannel)msg.Channel;
if (string.IsNullOrWhiteSpace(word))
return;
using (var http = new HttpClient())
{
var res = await http.GetStringAsync("http://api.pearson.com/v2/dictionaries/entries?headword=" + WebUtility.UrlEncode(word.Trim())).ConfigureAwait(false);
var data = JsonConvert.DeserializeObject<DefineModel>(res);
var sense = data.Results.Where(x => x.Senses != null && x.Senses[0].Definition != null).FirstOrDefault()?.Senses[0];
if (sense?.Definition == null)
return;
string definition = sense.Definition.ToString();
if (!(sense.Definition is string))
definition = ((JArray)JToken.Parse(sense.Definition.ToString())).First.ToString();
var embed = new EmbedBuilder().WithOkColor()
.WithTitle("Define: " + word)
.WithDescription(definition)
.WithFooter(efb => efb.WithText(sense.Gramatical_info?.type));
if (sense.Examples != null)
embed.AddField(efb => efb.WithName("Example").WithValue(sense.Examples.First().text));
await channel.EmbedAsync(embed.Build()).ConfigureAwait(false);
}
}
[NadekoCommand, Usage, Description, Aliases] [NadekoCommand, Usage, Description, Aliases]
[RequireContext(ContextType.Guild)] [RequireContext(ContextType.Guild)]
public async Task Hashtag(IUserMessage umsg, [Remainder] string query = null) public async Task Hashtag(IUserMessage umsg, [Remainder] string query = null)

View File

@ -2003,6 +2003,33 @@ namespace NadekoBot.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to define def.
/// </summary>
public static string define_cmd {
get {
return ResourceManager.GetString("define_cmd", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Finds a definition of a word..
/// </summary>
public static string define_desc {
get {
return ResourceManager.GetString("define_desc", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to `{0}def heresy`.
/// </summary>
public static string define_usage {
get {
return ResourceManager.GetString("define_usage", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to defvol dv. /// Looks up a localized string similar to defvol dv.
/// </summary> /// </summary>

View File

@ -2826,4 +2826,13 @@
<data name="fairplay_usage" xml:space="preserve"> <data name="fairplay_usage" xml:space="preserve">
<value>`{0}fp`</value> <value>`{0}fp`</value>
</data> </data>
<data name="define_cmd" xml:space="preserve">
<value>define def</value>
</data>
<data name="define_desc" xml:space="preserve">
<value>Finds a definition of a word.</value>
</data>
<data name="define_usage" xml:space="preserve">
<value>`{0}def heresy`</value>
</data>
</root> </root>