From 26cbbee03e82d850ae45cb4a32842cb2da5a4823 Mon Sep 17 00:00:00 2001 From: Salmonllama Date: Sat, 12 Sep 2020 15:34:01 -0400 Subject: [PATCH] Completed OSRS Search Module --- .../commands/osrssearch/OsrsBodyCommand.java | 28 ++++++--- .../commands/osrssearch/OsrsCapeCommand.java | 61 +++++++++++++++++++ .../commands/osrssearch/OsrsFeetCommand.java | 61 +++++++++++++++++++ .../commands/osrssearch/OsrsHandCommand.java | 61 +++++++++++++++++++ .../commands/osrssearch/OsrsHeadCommand.java | 61 +++++++++++++++++++ .../commands/osrssearch/OsrsLegsCommand.java | 61 +++++++++++++++++++ .../commands/osrssearch/OsrsNeckCommand.java | 61 +++++++++++++++++++ .../osrssearch/OsrsSearchCommand.java | 60 ++++++++++++++++++ .../osrssearch/OsrsShieldCommand.java | 61 +++++++++++++++++++ .../osrssearch/OsrsWeaponCommand.java | 61 +++++++++++++++++++ 10 files changed, 569 insertions(+), 7 deletions(-) create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsCapeCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsFeetCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHandCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHeadCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsLegsCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsNeckCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsSearchCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsShieldCommand.java create mode 100644 src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsWeaponCommand.java diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsBodyCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsBodyCommand.java index 8342ae1..b799eb1 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsBodyCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsBodyCommand.java @@ -8,20 +8,24 @@ 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; -import java.util.Collections; public class OsrsBodyCommand extends Command { @Override public String name() { return "OSRS Body"; } @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 CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } - @Override public Collection aliases() { return new ArrayList<>(Collections.singletonList("07body")); } + @Override public Collection aliases() { return new ArrayList<>(Arrays.asList("07body", "osrsbody")); } + + private static final Logger logger = LoggerFactory.getLogger(OsrsBodyCommand.class); @Override public void onCommand(CommandContext ctx) { @@ -31,17 +35,27 @@ public class OsrsBodyCommand extends Command { } var args = ctx.getArgs(); + ScapeFashionConnection conn = new ScapeFashionConnection(); + var params = Strings.join(Arrays.asList(args), ' '); + if (OsrsSearchUtilities.isColor(args[0])) { // Color search - ScapeFashionConnection conn = new ScapeFashionConnection(); - try { // TODO: Commands with items instead of colors do not work - var bestMatch = conn.osrsColor(Strings.join(Arrays.asList(args), ' '), ScapeFashionSlotOsrs.BODY); + try { + var bestMatch = conn.osrsColor(params, ScapeFashionSlotOsrs.BODY); OsrsSearchUtilities.sendResult(bestMatch, ctx.getChannel()); } catch (Exception e) { - OsrsSearchUtilities.handleException(e, ctx); + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); } } else { // 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); + } } } } diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsCapeCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsCapeCommand.java new file mode 100644 index 0000000..135cc89 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsCapeCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsFeetCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsFeetCommand.java new file mode 100644 index 0000000..dc4ad65 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsFeetCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHandCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHandCommand.java new file mode 100644 index 0000000..44a0f33 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHandCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHeadCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHeadCommand.java new file mode 100644 index 0000000..140ef2e --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsHeadCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsLegsCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsLegsCommand.java new file mode 100644 index 0000000..95302ff --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsLegsCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsNeckCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsNeckCommand.java new file mode 100644 index 0000000..b7af727 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsNeckCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsSearchCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsSearchCommand.java new file mode 100644 index 0000000..6cf5fcf --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsSearchCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsShieldCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsShieldCommand.java new file mode 100644 index 0000000..f776eae --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsShieldCommand.java @@ -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 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); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsWeaponCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsWeaponCommand.java new file mode 100644 index 0000000..6898449 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/osrssearch/OsrsWeaponCommand.java @@ -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 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); + } + } + } +}