Create global crypto command

This commit is contained in:
anthorob committed 2022-01-07 12:53:37 -05:00
1 parent 2a1c7c4f3b
commit 696d989f7b
3 files changed
+115 -6

No files matched your search

@@ -0,0 +1,95 @@
package netneutrality.command.crypto;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import netneutrality.command.AbstractCommand;
import netneutrality.command.CommandType;
import netneutrality.command.Visibility;
import netneutrality.http.WebModule;
import org.json.JSONException;
import java.io.IOException;
public class CryptoPriceCommand extends AbstractCommand {
private String currency = "USD";
private final String baseURL = "https://min-api.cryptocompare.com/data/price";
private String price = "";
@Override
public boolean needAdmin() {
return false;
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public String getCommand() {
return "crypto";
}
@Override
public String[] getAlias() {
return new String[0];
}
@Override
public String getUsage() {
return "<crypto> <currency>";
}
@Override
public String getDescription() {
return "Get the price of cryptocurrrency";
}
@Override
public Visibility getVisibility() {
return Visibility.CHANNEL;
}
@Override
public CommandType getType() {
return null;
}
@Override
public String execute(MessageReceivedEvent event, String[] args) {
if (args.length > 0) {
if (args.length == 2) {
if (Currency.isCurrency(args[1].toUpperCase()))
this.currency = args[1].toUpperCase();
else {
event.getTextChannel().sendMessage("Please enter a valid currency").queue();
return null;
}
}
event.getTextChannel().sendMessage("Retreiving price, please wait...").queue(t -> {
try {
WebModule ethereumHttp = new WebModule(baseURL + "?fsym=" + args[0] + "&tsyms=" + currency.toUpperCase()).request();
price = Double.toString(ethereumHttp.getAsObject().getDouble(currency));
if (price == null)
throw new IllegalArgumentException("Crypto doesn't exist");
} catch (IOException | JSONException | IllegalArgumentException e) {
e.printStackTrace();
t.editMessage("Error getting ethereum price!").queue();
}
t.editMessage(String.format("The current price of %s in %s is %s$", args[0].toUpperCase(), currency, price)).queue();
});
}
return null;
}
}
@@ -15,7 +15,7 @@ import netneutrality.http.WebModule;
public class LitecoinPriceCommand extends AbstractCommand {
private String currency;
private final String currencyUrl = "https://api.coinmarketcap.com/v1/ticker/litecoin/?convert=";
private final String currencyUrl = "https://min-api.cryptocompare.com/data/price?fsym=LTC&tsyms=";
private String price;
public LitecoinPriceCommand() {
@@ -13,8 +13,8 @@ import java.util.TreeMap;
public class WebModule {
private String url;
private OkHttpClient client = new OkHttpClient();
private final String url;
private final OkHttpClient client = new OkHttpClient();
private Response response;
public WebModule(String url) {
@@ -30,7 +30,7 @@ public class WebModule {
public WebModule request() {
Request request = new Request.Builder().url(this.url)
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36")
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 OPR/82.0.4227.43")
.build();
try {
response = client.newCall(request).execute();
@@ -72,8 +72,6 @@ public class WebModule {
}
public static String createJson(TreeMap<String, String> params) {
StringBuilder json = new StringBuilder();
for (Map.Entry<String, String> param : params.entrySet()) {
@@ -86,6 +84,21 @@ public class WebModule {
return (json.length() > 1 ? json.substring(0, json.length() - 1) + "}" : "");
}
public static String createJsonObject(List<String> key, List<String> value) {
if (key.size() != value.size())
throw new IllegalArgumentException("Key list size not equal to value list size");
StringBuilder json = new StringBuilder();
for (int index = 0; index < key.size();) {
json.append(String.format("\"%s\":\"%s\"", key.get(index), value.get(index)));
json.append(",");
}
json.insert(0, "{");
return (json.length() > 1 ? json.substring(0, json.length() - 1) + "}" : "");
}
public static String createJsonArray(List<String> list) {
StringBuilder json = new StringBuilder();
@@ -110,6 +123,7 @@ public class WebModule {
return (json.length() > 1 ? json.substring(0, json.length() - 1) + "]" : "[]");
}
/**
* @return the response as a JSONObject