add option constraints for some commands
This commit is contained in:
1 parent
29eecd42a9
commit
88fa8aac23
3 files changed
+39
-6
No files matched your search
@@ -44,21 +44,25 @@ public class ReactionCommand extends AbstractAdminCommand {
|
|||||||
builder.addSubcommandGroups(
|
builder.addSubcommandGroups(
|
||||||
new SubcommandGroupData("emoji", "Give roles to users using emojis").addSubcommands(
|
new SubcommandGroupData("emoji", "Give roles to users using emojis").addSubcommands(
|
||||||
new SubcommandData("setup", "Add a role to a message").addOptions(
|
new SubcommandData("setup", "Add a role to a message").addOptions(
|
||||||
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true),
|
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true)
|
||||||
|
.setRequiredLength(19, 19),
|
||||||
new OptionData(OptionType.STRING, "emoji", "Emoji associated with the role", true),
|
new OptionData(OptionType.STRING, "emoji", "Emoji associated with the role", true),
|
||||||
new OptionData(OptionType.ROLE, "role", "Role to add to the emoji", true)
|
new OptionData(OptionType.ROLE, "role", "Role to add to the emoji", true)
|
||||||
),
|
),
|
||||||
new SubcommandData("add", "Add a role to an existing message").addOptions(
|
new SubcommandData("add", "Add a role to an existing message").addOptions(
|
||||||
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true),
|
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true)
|
||||||
|
.setRequiredLength(19, 19),
|
||||||
new OptionData(OptionType.STRING, "emoji", "Emoji associated with the role", true),
|
new OptionData(OptionType.STRING, "emoji", "Emoji associated with the role", true),
|
||||||
new OptionData(OptionType.ROLE, "role", "Role to add to the emoji", true)
|
new OptionData(OptionType.ROLE, "role", "Role to add to the emoji", true)
|
||||||
),
|
),
|
||||||
new SubcommandData("remove", "Remove a role from a message").addOptions(
|
new SubcommandData("remove", "Remove a role from a message").addOptions(
|
||||||
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true),
|
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true)
|
||||||
|
.setRequiredLength(19, 19),
|
||||||
new OptionData(OptionType.STRING, "emoji", "Emoji to remove from the message", true)
|
new OptionData(OptionType.STRING, "emoji", "Emoji to remove from the message", true)
|
||||||
),
|
),
|
||||||
new SubcommandData("delete", "Remove all roles from a message").addOptions(
|
new SubcommandData("delete", "Remove all roles from a message").addOptions(
|
||||||
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true)
|
new OptionData(OptionType.STRING, "messageid", "The ID of the message", true)
|
||||||
|
.setRequiredLength(19, 19)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class ConfigureCommand extends AbstractAdminCommand {
|
|||||||
public void registerCommandOptions(CommandOptionsBuilder builder) {
|
public void registerCommandOptions(CommandOptionsBuilder builder) {
|
||||||
builder.addSubcommands(
|
builder.addSubcommands(
|
||||||
new SubcommandData("music-volume", "Volume for the music player")
|
new SubcommandData("music-volume", "Volume for the music player")
|
||||||
.addOptions(new OptionData(OptionType.INTEGER, "volume", "Integer between 0 and 100", true)
|
.addOptions(new OptionData(OptionType.INTEGER, "volume", "Playback volume for every session", true)
|
||||||
.setRequiredRange(0, 100)),
|
.setRequiredRange(0, 100)),
|
||||||
new SubcommandData("error-logging", "Send errors to #error and/or #log channel")
|
new SubcommandData("error-logging", "Send errors to #error and/or #log channel")
|
||||||
.addOption(OptionType.BOOLEAN, "debug", "Enable or disable the fonctionnality", true),
|
.addOption(OptionType.BOOLEAN, "debug", "Enable or disable the fonctionnality", true),
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import me.bobert.netneutrality.core.command.options.CommandOptionsBuilder;
|
|||||||
import me.bobert.netneutrality.core.context.CommandContext;
|
import me.bobert.netneutrality.core.context.CommandContext;
|
||||||
import me.bobert.netneutrality.http.WebModule;
|
import me.bobert.netneutrality.http.WebModule;
|
||||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
@@ -22,7 +23,9 @@ import java.util.Locale;
|
|||||||
|
|
||||||
public class CryptoPriceCommand extends AbstractCommand {
|
public class CryptoPriceCommand extends AbstractCommand {
|
||||||
|
|
||||||
|
private final String exchange = "Coinbase";
|
||||||
private final String baseURL = "https://min-api.cryptocompare.com/data/price";
|
private final String baseURL = "https://min-api.cryptocompare.com/data/price";
|
||||||
|
private final String exchangeApi = String.format("https://min-api.cryptocompare.com/data/v4/all/exchanges?e=%s", exchange);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean needAdmin() {
|
public boolean needAdmin() {
|
||||||
@@ -51,8 +54,11 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerCommandOptions(CommandOptionsBuilder builder) {
|
public void registerCommandOptions(CommandOptionsBuilder builder) {
|
||||||
builder.addOption(OptionType.STRING, "symbol", "The crypto symbol to fetch price for", true);
|
builder.addOptions(
|
||||||
builder.addOption(OptionType.STRING, "currency", "In which currency should the price be displayed");
|
new OptionData(OptionType.STRING, "symbol", "The crypto symbol to fetch price for", true),
|
||||||
|
new OptionData(OptionType.STRING, "currency", "In which currency should the price be displayed")
|
||||||
|
.setRequiredLength(3, 3)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,6 +68,7 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandExecutionResult execute(CommandContext context) {
|
public CommandExecutionResult execute(CommandContext context) {
|
||||||
|
//TODO: implement cache
|
||||||
Locale usa = new Locale("en", "US");
|
Locale usa = new Locale("en", "US");
|
||||||
NumberFormat dollarFormat = NumberFormat.getCurrencyInstance(usa);
|
NumberFormat dollarFormat = NumberFormat.getCurrencyInstance(usa);
|
||||||
dollarFormat.setMaximumFractionDigits(24);
|
dollarFormat.setMaximumFractionDigits(24);
|
||||||
@@ -78,6 +85,10 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
String finalCurrency = currency.toUpperCase();
|
String finalCurrency = currency.toUpperCase();
|
||||||
context.async(asyncMessage -> {
|
context.async(asyncMessage -> {
|
||||||
try {
|
try {
|
||||||
|
if (!validateSymbol(symbol)) {
|
||||||
|
asyncMessage.edit("Crypto doesn't exist.. yet");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
WebModule http = new WebModule(String.format("%s?fsym=%s&tsyms=%s", baseURL, symbol, finalCurrency)).request();
|
WebModule http = new WebModule(String.format("%s?fsym=%s&tsyms=%s", baseURL, symbol, finalCurrency)).request();
|
||||||
JSONObject json = http.getAsObject();
|
JSONObject json = http.getAsObject();
|
||||||
@@ -100,4 +111,22 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
|
|
||||||
return CommandExecutionResult.none();
|
return CommandExecutionResult.none();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean validateSymbol(String symbol) {
|
||||||
|
try {
|
||||||
|
WebModule http = new WebModule(exchangeApi).request();
|
||||||
|
JSONObject json = http.getAsObject();
|
||||||
|
|
||||||
|
JSONObject pairs = json.getJSONObject("Data")
|
||||||
|
.getJSONObject("exchanges")
|
||||||
|
.getJSONObject(exchange)
|
||||||
|
.getJSONObject("pairs");
|
||||||
|
|
||||||
|
return pairs.has(symbol);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogHandler.log(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user