Completed OSRS Search Module

This commit is contained in:
Salmonllama 2020-09-12 15:34:01 -04:00
parent bc69c31713
commit 26cbbee03e
10 changed files with 569 additions and 7 deletions

View File

@ -8,20 +8,24 @@ package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs; import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*; import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
public class OsrsBodyCommand extends Command { public class OsrsBodyCommand extends Command {
@Override public String name() { return "OSRS Body"; } @Override public String name() { return "OSRS Body"; }
@Override public String description() { return "Searches scape.fashion for body slot items."; } @Override public String description() { return "Searches scape.fashion for body slot items."; }
@Override public String usage() { return "osrsbody <#color or item name"; } @Override public String usage() { return "osrsbody <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; } @Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Collections.singletonList("07body")); } @Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07body", "osrsbody")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsBodyCommand.class);
@Override @Override
public void onCommand(CommandContext ctx) { public void onCommand(CommandContext ctx) {
@ -31,17 +35,27 @@ public class OsrsBodyCommand extends Command {
} }
var args = ctx.getArgs(); var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) { if (OsrsSearchUtilities.isColor(args[0])) {
// Color search // Color search
ScapeFashionConnection conn = new ScapeFashionConnection(); try {
try { // TODO: Commands with items instead of colors do not work var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.BODY);
var bestMatch = conn.osrsColor(Strings.join(Arrays.asList(args), ' '), ScapeFashionSlotOsrs.BODY);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel()); OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) { } catch (Exception e) {
OsrsSearchUtilities.handleException(e, ctx); logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
} }
} else { } else {
// Item search // Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.BODY);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} }
} }
} }

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsCapeCommand extends Command {
@Override public String name() { return "OSRS Cape"; }
@Override public String description() { return "Searches scape.fashion for cape slot items."; }
@Override public String usage() { return "osrscape <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07cape", "osrscape")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsCapeCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.CAPE);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.CAPE);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsFeetCommand extends Command {
@Override public String name() { return "OSRS Feet"; }
@Override public String description() { return "Searches scape.fashion for foot slot items."; }
@Override public String usage() { return "osrsfeet <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07feet", "osrsfeet")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsFeetCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.FEET);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.FEET);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsHandCommand extends Command {
@Override public String name() { return "OSRS Hand"; }
@Override public String description() { return "Searches scape.fashion for hand slot items."; }
@Override public String usage() { return "osrshand <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07hand", "osrshand")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsHandCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.HAND);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.HAND);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsHeadCommand extends Command {
@Override public String name() { return "OSRS Head"; }
@Override public String description() { return "Searches scape.fashion for head slot items."; }
@Override public String usage() { return "osrshead <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07head", "osrshead")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsHeadCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.HEAD);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.HEAD);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsLegsCommand extends Command {
@Override public String name() { return "OSRS Legs"; }
@Override public String description() { return "Searches scape.fashion for leg slot items."; }
@Override public String usage() { return "osrslegs <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07legs", "osrslegs")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsLegsCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.LEG);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.LEG);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsNeckCommand extends Command {
@Override public String name() { return "OSRS Neck"; }
@Override public String description() { return "Searches scape.fashion for neck slot items."; }
@Override public String usage() { return "osrsneck <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07neck", "osrsneck")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsNeckCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.NECK);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.NECK);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,60 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsSearchCommand extends Command {
@Override public String name() { return "OSRS Search"; }
@Override public String description() { return "Searches scape.fashion for any items."; }
@Override public String usage() { return "osrssearch <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07search", "osrssearch")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsSearchCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsShieldCommand extends Command {
@Override public String name() { return "OSRS Shield"; }
@Override public String description() { return "Searches scape.fashion for shield slot items."; }
@Override public String usage() { return "osrsshield <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07shield", "osrsshield")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsShieldCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.SHIELD);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.SHIELD);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 2020. Aleksei Gryczewski
* All rights reserved.
*/
package dev.salmonllama.fsbot.commands.osrssearch;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection;
import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotOsrs;
import dev.salmonllama.fsbot.guthix.*;
import dev.salmonllama.fsbot.utilities.DiscordUtilities;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class OsrsWeaponCommand extends Command {
@Override public String name() { return "OSRS Weapon"; }
@Override public String description() { return "Searches scape.fashion for weapo slot items."; }
@Override public String usage() { return "osrsweapon <#color or item name>"; }
@Override public CommandCategory category() { return CommandCategory.OSRS_ITEM_SEARCH; }
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("07weapon", "osrsweapon")); }
private static final Logger logger = LoggerFactory.getLogger(OsrsWeaponCommand.class);
@Override
public void onCommand(CommandContext ctx) {
if (ctx.getArgs().length == 0) {
ctx.reply("Specify something");
return;
}
var args = ctx.getArgs();
ScapeFashionConnection conn = new ScapeFashionConnection();
var params = Strings.join(Arrays.asList(args), ' ');
if (OsrsSearchUtilities.isColor(args[0])) {
// Color search
try {
var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.WEAPON);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
} else {
// Item search
try {
var bestMatch = conn.osrsItem(params, ScapeFashionSlotOsrs.WEAPON);
OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel());
} catch (Exception e) {
logger.error(e.getMessage());
DiscordUtilities.handleException(e, ctx);
}
}
}
}