Compare commits

...

2 Commits

Author SHA1 Message Date
Tristan B. Velloza Kildaire 08ce59de5a UrbanDict
- Allow the usage of `.ub:x` for index
2023-07-03 18:00:46 +02:00
Tristan B. Velloza Kildaire 6b03585b53 UrbanDict
- Catch any resulting birchwood errors and print them out
2023-07-03 17:52:46 +02:00
1 changed files with 88 additions and 53 deletions

View File

@ -8,6 +8,7 @@ import botty.bot : Bot;
import birchwood.protocol.messages : Message;
import std.net.curl : CurlException;
import std.json : JSONValue, JSONException, parseJSON;
import birchwood;
/**
* Urban dictionary command
@ -45,6 +46,7 @@ public final class UrbanDict : Mod
import std.stdio;
import std.string : split;
import std.conv : to, ConvException;
/**
* Split the ` .ub dictionarydef`
@ -54,8 +56,34 @@ public final class UrbanDict : Mod
string[] splits = split(messageBody, " ");
writeln("splits", splits);
try
{
if(splits.length >= 2)
{
/**
* Checks for `.ub:2`
*/
ulong count = 0;
long countIdx = splits[0].indexOf(":");
if(countIdx > -1)
{
string countStr = splits[0].split(":")[1];
try
{
count = to!(ulong)(countStr);
}
catch(ConvException e)
{
getBot().channelMessage("Invalid index '"~countStr~"'", channel);
}
}
writeln("Are we ongod yet? ",messageBody.indexOf(" "));
string searchTerm = strip(messageBody[messageBody.indexOf(" ")..$]);
writeln("search term: '"~searchTerm~"'");
@ -64,13 +92,15 @@ public final class UrbanDict : Mod
{
// Perform lookup and parsing
JSONValue[] definitions = doThing(searchTerm);
writeln("Definitions count: ", definitions.length);
writeln("Selecting definition: ", count);
if(definitions.length > 0)
{
// TODO: Send result below
// getBot().channelMessage(translatedText, channel);
JSONValue firstDef = definitions[0];
JSONValue firstDef = definitions[count];
string definition = firstDef["definition"].str();
string example = firstDef["example"].str();
@ -120,6 +150,11 @@ public final class UrbanDict : Mod
writeln("IMM A W ");
}
}
catch(BirchwoodException e)
{
writeln("Birchwood error: ", e);
}
}
private static JSONValue[] doThing(string term)
{