Refactored GetOutfitCommand

This commit is contained in:
Aleksei 2020-02-27 18:23:34 -05:00
parent 010eca59db
commit 474e6db324

View File

@ -5,22 +5,16 @@
package dev.salmonllama.fsbot.commands.staff; package dev.salmonllama.fsbot.commands.staff;
import com.rethinkdb.RethinkDB;
import com.rethinkdb.net.Connection;
import com.rethinkdb.net.Cursor;
import dev.salmonllama.fsbot.config.BotConfig; import dev.salmonllama.fsbot.config.BotConfig;
import dev.salmonllama.fsbot.database.controllers.OutfitController;
import dev.salmonllama.fsbot.guthix.Command; import dev.salmonllama.fsbot.guthix.Command;
import dev.salmonllama.fsbot.guthix.CommandContext; import dev.salmonllama.fsbot.guthix.CommandContext;
import dev.salmonllama.fsbot.guthix.CommandPermission; import dev.salmonllama.fsbot.guthix.CommandPermission;
import dev.salmonllama.fsbot.guthix.PermissionType; import dev.salmonllama.fsbot.guthix.PermissionType;
import org.javacord.api.entity.channel.TextChannel;
import org.javacord.api.entity.message.embed.EmbedBuilder;
import java.awt.*;
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.List;
public class GetOutfitCommand extends Command { // TODO: This command also needs HELP public class GetOutfitCommand extends Command { // TODO: This command also needs HELP
@Override public String name() { return "Get Outift"; } @Override public String name() { return "Get Outift"; }
@ -30,87 +24,17 @@ public class GetOutfitCommand extends Command { // TODO: This command also needs
@Override public CommandPermission permission() { return new CommandPermission(PermissionType.ROLE, BotConfig.STAFF_ROLE); } @Override public CommandPermission permission() { return new CommandPermission(PermissionType.ROLE, BotConfig.STAFF_ROLE); }
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("getoutfit", "get")); } @Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("getoutfit", "get")); }
static final RethinkDB r = RethinkDB.r;
static final Connection conn = r.connection().hostname("localhost").port(28015).connect();
@Override @Override
public void onCommand(CommandContext ctx) { public void onCommand(CommandContext ctx) {
// args is ONLY the ID
String[] args = ctx.getArgs(); String[] args = ctx.getArgs();
TextChannel channel = ctx.getChannel();
if (args.length != 1) {
channel.sendMessage("you did that wrong mate");
return;
}
String id = args[0]; String id = args[0];
OutfitController.findById(id).thenAccept(outfitOpt -> {
// Check if the given id exists in the table outfitOpt.ifPresentOrElse(
try { outfit -> ctx.reply(outfit.toString()),
r.db("fsbot").table("outfits").filter(row -> row.getField("id").eq(id)).run(conn); () -> ctx.reply("Outfit not found, did you get the id right?")
} );
catch (Exception e) { });
EmbedBuilder embed = new EmbedBuilder()
.setColor(Color.RED)
.addField("ERROR:", "That id does not exist in that table")
.addField("Output:", e.toString())
.setFooter("Contact Salmonllama#5727 if you see this");
channel.sendMessage(embed);
return;
}
// Get the entry for the given table/tag and id, build the embed, and send it.
try {
String embedLink = null;
String embedSubmitter = null;
Cursor linkCursor = r.db("fsbot")
.table("outfits")
.filter(row -> row.getField("id").eq(id))
.getField("link")
.run(conn);
Cursor submitterCursor = r.db("fsbot")
.table("outfits")
.filter(row -> row.getField("id").eq(id))
.getField("submitter")
.run(conn);
List links = linkCursor.toList();
for (Object link : links) {
embedLink = link.toString();
}
List submitters = submitterCursor.toList();
for (Object submitter : submitters) {
embedSubmitter = submitter.toString();
}
// Send a diff message if any of the things are null
if (embedLink == null) {
EmbedBuilder embed = new EmbedBuilder()
.setColor(Color.RED)
.addField("ERROR: ", "The entry you tried to access doesn't exist.");
channel.sendMessage(embed);
return;
}
// Send the final Embed with the outfit image as a link, the submitter, and the id of the image.
EmbedBuilder embed = new EmbedBuilder()
.setColor(Color.GREEN)
.setAuthor(embedSubmitter)
.setImage(embedLink)
.setFooter(id);
channel.sendMessage(embed);
}
catch (Exception e) {
EmbedBuilder embed = new EmbedBuilder()
.setColor(Color.RED)
.addField("ERROR:", "Something went wrong...")
.addField("Output:", e.toString())
.setFooter("Contact Crablet#9999 and show him this error.");
channel.sendMessage(embed);
}
} }
} }