diff --git a/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3BackCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3BackCommand.java new file mode 100644 index 0000000..3fffdc4 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3BackCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3BackCommand extends Command { + @Override public String name() { return "RS3 Back"; } + @Override public String description() { return "Searches scape.fashion for rs3 back slot items."; } + @Override public String usage() { return "rs3back <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3back"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3BackCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.BACK); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.BACK); + Rs3SearchUtilities.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/rs3search/Rs3BodyCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3BodyCommand.java new file mode 100644 index 0000000..1102423 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3BodyCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3BodyCommand extends Command { + @Override public String name() { return "RS3 Body"; } + @Override public String description() { return "Searches scape.fashion for rs3 body slot items."; } + @Override public String usage() { return "rs3body <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3body"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3BodyCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.TORSO); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.TORSO); + Rs3SearchUtilities.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/rs3search/Rs3FeetCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3FeetCommand.java new file mode 100644 index 0000000..bf3ee85 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3FeetCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3FeetCommand extends Command { + @Override public String name() { return "RS3 Feet"; } + @Override public String description() { return "Searches scape.fashion for rs3 foot slot items."; } + @Override public String usage() { return "rs3feet <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3feet"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3FeetCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.FEET); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.FEET); + Rs3SearchUtilities.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/rs3search/Rs3HandCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3HandCommand.java new file mode 100644 index 0000000..25b4c88 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3HandCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3HandCommand extends Command { + @Override public String name() { return "RS3 Hand"; } + @Override public String description() { return "Searches scape.fashion for rs3 hand slot items."; } + @Override public String usage() { return "rs3hand <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3hand"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3HandCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.HAND); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.HAND); + Rs3SearchUtilities.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/rs3search/Rs3HeadCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3HeadCommand.java new file mode 100644 index 0000000..6311fe7 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3HeadCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3HeadCommand extends Command { + @Override public String name() { return "RS3 Head"; } + @Override public String description() { return "Searches scape.fashion for rs3 head slot items."; } + @Override public String usage() { return "rs3head <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3head"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3HeadCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.HEAD); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.HEAD); + Rs3SearchUtilities.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/rs3search/Rs3LegsCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3LegsCommand.java new file mode 100644 index 0000000..fdf245d --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3LegsCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3LegsCommand extends Command { + @Override public String name() { return "RS3 Legs"; } + @Override public String description() { return "Searches scape.fashion for rs3 leg slot items."; } + @Override public String usage() { return "rs3legs <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3legs"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3LegsCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.LEG); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.LEG); + Rs3SearchUtilities.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/rs3search/Rs3MainhandCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3MainhandCommand.java new file mode 100644 index 0000000..1ae22a5 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3MainhandCommand.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.List; + +public class Rs3MainhandCommand extends Command { + @Override public String name() { return "RS3 Mainhand"; } + @Override public String description() { return "Searches scape.fashion for rs3 mainhand slot items."; } + @Override public String usage() { return "rs3mainhand <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Arrays.asList("rs3mainhand", "rs3mh"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3MainhandCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.MAIN_HAND); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.MAIN_HAND); + Rs3SearchUtilities.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/rs3search/Rs3NeckCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3NeckCommand.java new file mode 100644 index 0000000..466ed77 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3NeckCommand.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3NeckCommand extends Command { + @Override public String name() { return "RS3 Neck"; } + @Override public String description() { return "Searches scape.fashion for rs3 neck slot items."; } + @Override public String usage() { return "rs3neck <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3neck"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3NeckCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.NECK); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.NECK); + Rs3SearchUtilities.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/rs3search/Rs3OffhandCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3OffhandCommand.java new file mode 100644 index 0000000..a5fe708 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3OffhandCommand.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.List; + +public class Rs3OffhandCommand extends Command { + @Override public String name() { return "RS3 Offhand"; } + @Override public String description() { return "Searches scape.fashion for rs3 offhand slot items."; } + @Override public String usage() { return "rs3offhand <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Arrays.asList("rs3offhand", "rs3oh"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3OffhandCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.OFF_HAND); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.OFF_HAND); + Rs3SearchUtilities.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/rs3search/Rs3SearchCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3SearchCommand.java new file mode 100644 index 0000000..362496c --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3SearchCommand.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +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.Arrays; +import java.util.Collections; +import java.util.List; + +public class Rs3SearchCommand extends Command { + @Override public String name() { return "RS3 Search"; } + @Override public String description() { return "Searches scape.fashion for rs3 items."; } + @Override public String usage() { return "rs3search <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Collections.singletonList("rs3search"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3SearchCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params); + Rs3SearchUtilities.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/rs3search/Rs3SearchUtilities.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3SearchUtilities.java new file mode 100644 index 0000000..d2d22d6 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3SearchUtilities.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionResult; +import org.apache.logging.log4j.util.Strings; +import org.javacord.api.entity.channel.TextChannel; +import org.javacord.api.entity.message.embed.EmbedBuilder; + +import java.awt.*; +import java.util.Arrays; + +public class Rs3SearchUtilities { + static boolean isColor(String s) { + return s.startsWith("#"); + } + + static void sendResult(ScapeFashionResult result, TextChannel channel) { + var bestMatch = result.getItems().get(0); + var colors = Strings.join(Arrays.asList(bestMatch.getColors()), ','); + EmbedBuilder embed = new EmbedBuilder() + .setTitle(String.format("Best Match - %s", bestMatch.getName())) + .setImage(bestMatch.getImages().getDetail()) + .setAuthor(String.format("Wiki: %s", bestMatch.getName()), bestMatch.getWiki().getLink(), bestMatch.getImages().getDetail()) + .setUrl(result.getLink()) + .setColor(Color.decode(bestMatch.getColors()[0])) + .addField("Match:", String.valueOf(bestMatch.getMatch()), true) + .addField("Colors:", colors, true); + + channel.sendMessage(embed); + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3TwohandedCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3TwohandedCommand.java new file mode 100644 index 0000000..3499732 --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/commands/rs3search/Rs3TwohandedCommand.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.commands.rs3search; + +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionConnection; +import dev.salmonllama.fsbot.endpoints.scapefashion.ScapeFashionSlotRs3; +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.Arrays; +import java.util.List; + +public class Rs3TwohandedCommand extends Command { + @Override public String name() { return "RS3 Twohanded"; } + @Override public String description() { return "Searches scape.fashion for rs3 twohanded slot items."; } + @Override public String usage() { return "rs3twohanded <#color or item name>"; } + @Override public CommandCategory category() { return CommandCategory.RS3_ITEM_SEARCH; } + @Override public CommandPermission permission() { return new CommandPermission(PermissionType.NONE); } + @Override public List aliases() { return Arrays.asList("rs3twohanded", "rs32h"); } + + private static final Logger logger = LoggerFactory.getLogger(Rs3TwohandedCommand.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 (Rs3SearchUtilities.isColor(args[0])) { + // Color search + try { + var bestMatch = conn.rs3Color(params, ScapeFashionSlotRs3.TWO_HANDED); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } else { + // Item search + try { + var bestMatch = conn.rs3Item(params, ScapeFashionSlotRs3.TWO_HANDED); + Rs3SearchUtilities.sendResult(bestMatch, ctx.getChannel()); + } catch (Exception e) { + logger.error(e.getMessage()); + DiscordUtilities.handleException(e, ctx); + } + } + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java b/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java index 9e81aa1..f53fca4 100644 --- a/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java +++ b/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java @@ -8,6 +8,7 @@ package dev.salmonllama.fsbot.guthix; import dev.salmonllama.fsbot.commands.developer.*; import dev.salmonllama.fsbot.commands.general.*; import dev.salmonllama.fsbot.commands.osrssearch.*; +import dev.salmonllama.fsbot.commands.rs3search.*; import dev.salmonllama.fsbot.commands.staff.OutfitInfoCommand; import dev.salmonllama.fsbot.commands.staff.*; import org.javacord.api.DiscordApi; @@ -70,7 +71,7 @@ public class Guthix implements MessageCreateListener { addCommand(new OsrsSearchCommand()); addCommand(new OsrsHeadCommand()); addCommand(new OsrsBodyCommand()); - addCommand(new OsrsHeadCommand()); + addCommand(new OsrsHandCommand()); addCommand(new OsrsLegsCommand()); addCommand(new OsrsFeetCommand()); addCommand(new OsrsCapeCommand()); @@ -79,6 +80,17 @@ public class Guthix implements MessageCreateListener { addCommand(new OsrsWeaponCommand()); // Rs3 Search Commands + addCommand(new Rs3SearchCommand()); + addCommand(new Rs3HeadCommand()); + addCommand(new Rs3BodyCommand()); + addCommand(new Rs3NeckCommand()); + addCommand(new Rs3HandCommand()); + addCommand(new Rs3FeetCommand()); + addCommand(new Rs3LegsCommand()); + addCommand(new Rs3BackCommand()); + addCommand(new Rs3MainhandCommand()); + addCommand(new Rs3OffhandCommand()); + addCommand(new Rs3TwohandedCommand()); } public void addCommand(Command cmd) {