use of data.Character in project KaellyBot by Kaysoro.
the class WhoisCommand method request.
@Override
public boolean request(IMessage message) {
if (super.request(message)) {
Matcher m = getMatcher(message);
m.find();
Language lg = Translator.getLanguageFrom(message.getChannel());
String pseudo = m.group(1).trim().toLowerCase();
StringBuilder url;
try {
url = new StringBuilder(Translator.getLabel(lg, "game.url")).append(Translator.getLabel(lg, "character.url")).append("?").append(forPseudo).append(URLEncoder.encode(pseudo, "UTF-8"));
} catch (UnsupportedEncodingException e) {
ExceptionManager.manageException(e, message, this, lg);
return false;
}
if (m.group(2) != null) {
String serverName = m.group(2).trim().toLowerCase();
List<ServerDofus> result = new ArrayList<>();
for (ServerDofus server : ServerDofus.getServersDofus()) if (server.getName().toLowerCase().startsWith(serverName))
result.add(server);
if (result.size() == 1)
url.append("&").append(forServer).append(result.get(0).getId());
else {
if (!result.isEmpty())
tooMuchServers.throwException(message, this, lg);
else
notFoundServer.throwException(message, this, lg);
return false;
}
}
try {
Document doc = JSoupManager.getDocument(url.toString());
Elements elems = doc.getElementsByClass("ak-bg-odd");
elems.addAll(doc.getElementsByClass("ak-bg-even"));
if (!elems.isEmpty()) {
// on boucle jusqu'à temps de trouver le bon personnage (ie le plus proche du nom donnée)
List<String> result = new ArrayList<>();
List<String> servers = new ArrayList<>();
for (Element element : elems) if (pseudo.equals(element.child(1).text().trim().toLowerCase())) {
result.add(element.child(1).select("a").attr("href"));
servers.add(element.child(element.children().size() - 2).text());
}
if (result.size() == 1) {
Connection.Response response = JSoupManager.getResponse(Translator.getLabel(lg, "game.url") + result.get(0));
if (!response.url().getPath().endsWith(Translator.getLabel(lg, "whois.request"))) {
Character characPage = Character.getCharacter(Translator.getLabel(lg, "game.url") + result.get(0), lg);
Message.sendEmbed(message.getChannel(), characPage.getEmbedObject(lg));
} else
characterTooOld.throwException(message, this, lg);
} else if (result.size() > 1)
tooMuchCharacters.throwException(message, this, lg, servers);
else
notFoundCharacter.throwException(message, this, lg);
} else
notFoundCharacter.throwException(message, this, lg);
} catch (IOException e) {
ExceptionManager.manageIOException(e, message, this, lg, characterPageInaccessible);
} catch (Exception e) {
ExceptionManager.manageException(e, message, this, lg);
}
}
return false;
}
Aggregations