überarbeitung Kommentare

This commit is contained in:
Ocame
2019-02-18 16:15:47 +01:00
committed by Sebastian Zeidler
parent db63c3dfa7
commit 7b923bc606

194
src/main/java/Serenity/balance.java Normal file → Executable file
View File

@ -1,12 +1,8 @@
package Serenity; package Serenity;
import net.dv8tion.jda.core.entities.ChannelType; import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User; import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.entities.impl.RoleImpl;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.exceptions.InsufficientPermissionException;
import net.dv8tion.jda.core.hooks.ListenerAdapter; import net.dv8tion.jda.core.hooks.ListenerAdapter;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
@ -15,9 +11,7 @@ import java.io.*;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.HashMap; import java.util.*;
import java.util.Iterator;
import java.util.Map;
public class balance extends ListenerAdapter { public class balance extends ListenerAdapter {
@ -27,15 +21,14 @@ public class balance extends ListenerAdapter {
public balance() { public balance() {
this.prefixPromote = "!info"; this.prefixPromote = "!konto";
this.prefixDegradation = "!add "; this.prefixDegradation = "!pay ";
this.prefixDetail = "!detail"; this.prefixDetail = "!detail";
} }
@Override @Override
public void onMessageReceived(MessageReceivedEvent event) { public void onMessageReceived(MessageReceivedEvent event) {
if(event.getMessage().getContentRaw().startsWith("!ende")) { if (event.getMessage().getContentRaw().startsWith("!ende")) { // nur zum Debugen #todo muss wieder raus
event.getJDA().shutdown(); event.getJDA().shutdown();
} }
if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) && if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) &&
@ -46,24 +39,33 @@ public class balance extends ListenerAdapter {
User author = event.getAuthor(); User author = event.getAuthor();
if (!author.isBot()) { if (!author.isBot()) {
if(event.getMessage().getContentRaw().startsWith(this.prefixPromote)) if (event.getMessage().getContentRaw().startsWith(this.prefixPromote))
this.getInfo(event); this.getInfo(event);
else if(event.getMessage().getContentRaw().startsWith(this.prefixDegradation)) else if (event.getMessage().getContentRaw().startsWith(this.prefixDegradation))
this.addTransaction(event); this.addTransaction(event);
else if(event.getMessage().getContentRaw().startsWith(this.prefixDetail)) else if (event.getMessage().getContentRaw().startsWith(this.prefixDetail))
this.getInfo(event, true); this.getInfo(event, true);
} }
} }
private void getInfo(MessageReceivedEvent event) { private void getInfo(MessageReceivedEvent event) {
this.getInfo(event, false); this.getInfo(event, false);
} }
/**
* Holt Kontostand ab
*
* @param event JDA Event
* @param detail true = Abrufen der Detail, Chronologich, false = gesammt Kontostand
*/
private void getInfo(MessageReceivedEvent event, Boolean detail) { private void getInfo(MessageReceivedEvent event, Boolean detail) {
HttpURLConnection con = null; HttpURLConnection con = null;
String result = ""; //String result = "";
StringBuilder result_test = new StringBuilder("");
DecimalFormat myFormatter = new DecimalFormat(); DecimalFormat myFormatter = new DecimalFormat();
Map IdConvert = new HashMap(); Map<String, Integer> IdConvert = new HashMap<>();
IdConvert.put("256888865103544321", 2); // Niclos IdConvert.put("256888865103544321", 2); // Niclos
IdConvert.put("495895196685303818", 3); // Birgit IdConvert.put("495895196685303818", 3); // Birgit
IdConvert.put("385865287586545676", 7); // Felix IdConvert.put("385865287586545676", 7); // Felix
@ -73,17 +75,19 @@ public class balance extends ListenerAdapter {
IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff
try { try {
// Zerlgen der Anfrage
String parameter = ""; String parameter = "";
if(event.getMessage().getMentionedUsers().size() > 0) { if (event.getMessage().getMentionedUsers().size() > 0) {
if(IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId())) if (IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId()))
parameter = "?id=" + (IdConvert.get(event.getMessage().getMentionedUsers().get(0).getId())); parameter = "?id=" + (IdConvert.get(event.getMessage().getMentionedUsers().get(0).getId()));
} } else {
else {
parameter = "?id=1"; parameter = "?id=1";
} }
if(detail) { if (detail) {
parameter += "&detail=1"; parameter += "&detail=1";
} }
// aufbau zum REST
URL url = new URL("http://localhost/REST/balance" + parameter); URL url = new URL("http://localhost/REST/balance" + parameter);
con = (HttpURLConnection) url.openConnection(); con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET"); con.setRequestMethod("GET");
@ -95,7 +99,7 @@ public class balance extends ListenerAdapter {
int status = con.getResponseCode(); int status = con.getResponseCode();
switch (status) { switch (status) {
case 200: case 200:
case 201: case 201: // auswerten der Antwort
BufferedReader in = new BufferedReader( BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())); new InputStreamReader(con.getInputStream()));
String inputLine; String inputLine;
@ -104,32 +108,34 @@ public class balance extends ListenerAdapter {
content.append(inputLine); content.append(inputLine);
} }
in.close(); in.close();
JSONObject testjason = new JSONObject(content.toString());
Iterator<String> keys = testjason.keys();
while(keys.hasNext()) { JSONObject responseJson = new JSONObject(content.toString());
Iterator<String> keys = responseJson.keys();
while (keys.hasNext()) {
String key = keys.next(); String key = keys.next();
if (testjason.get(key) instanceof JSONObject) { if (responseJson.get(key) instanceof JSONObject) {
result += "**" + ((JSONObject) testjason.get(key)).get("name").toString() + ":**\n"; result_test.append("**").append(((JSONObject) responseJson.get(key)).get("name").toString()).append(":**\n");
result += "```";
JSONArray transaction = (JSONArray) ((JSONObject) testjason.get(key)).get("transaction"); result_test.append("```");
for(int i = 0; i < transaction.length(); i++) { JSONArray transaction = (JSONArray) ((JSONObject) responseJson.get(key)).get("transaction");
for (int j = 7-(myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))).length(); j > 0; j--) { for (int i = 0; i < transaction.length(); i++) {
result += " "; for (int j = 7 - (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))).length(); j > 0; j--) {
result_test.append(" ");
} }
result += (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))); result_test.append( (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))));
result += " " + ((JSONObject) transaction.get(i)).get("currency_name").toString() + " "; result_test.append(" ").append( ((JSONObject) transaction.get(i)).get("currency_name").toString()).append(" ");
if(detail) { if (detail) {
result += " - " + ((JSONObject) transaction.get(i)).get("reason").toString(); result_test.append(" - ").append(((JSONObject) transaction.get(i)).get("reason").toString());
} }
result += "\n"; result_test.append( "\n");
} }
result += "```"; result_test.append( "```");
} }
} }
event.getChannel().sendMessage(event.getMember().getAsMention() + "\n" + result).queue(); event.getChannel().sendMessage(event.getMember().getAsMention() + "\n" + result_test.toString()).queue();
break; break;
default: default:
System.out.println(":("); System.out.println(":(");
@ -137,10 +143,9 @@ public class balance extends ListenerAdapter {
con.disconnect(); con.disconnect();
} catch (Exception e) { } catch (Exception e) {
System.out.println("problem: "+e.getMessage()); System.out.println("problem: " + e.getMessage());
} } finally {
finally { if (con != null) { // Verbindung schließen wenn noch offen
if (con != null) {
try { try {
con.disconnect(); con.disconnect();
} catch (Exception ex) { } catch (Exception ex) {
@ -151,8 +156,13 @@ public class balance extends ListenerAdapter {
} }
/**
* Fügt neue Transaktion hinzu
*
* @param event JDA Event
*/
private void addTransaction(MessageReceivedEvent event) { private void addTransaction(MessageReceivedEvent event) {
Map IdConvert = new HashMap(); Map<String, Integer> IdConvert = new HashMap<>();
IdConvert.put("256888865103544321", 2); // Niclos IdConvert.put("256888865103544321", 2); // Niclos
IdConvert.put("495895196685303818", 3); // Birgit IdConvert.put("495895196685303818", 3); // Birgit
IdConvert.put("385865287586545676", 7); // Felix IdConvert.put("385865287586545676", 7); // Felix
@ -162,7 +172,7 @@ public class balance extends ListenerAdapter {
IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff
Map currencyConvert = new HashMap(); Map<String, Integer> currencyConvert = new HashMap<>();
currencyConvert.put("credit", 1); currencyConvert.put("credit", 1);
currencyConvert.put("c", 1); currencyConvert.put("c", 1);
currencyConvert.put("doller", 2); currencyConvert.put("doller", 2);
@ -175,7 +185,7 @@ public class balance extends ListenerAdapter {
currencyConvert.put("silver", 5); currencyConvert.put("silver", 5);
currencyConvert.put("s", 5); currencyConvert.put("s", 5);
Map currencyConvert2 = new HashMap(); Map<Integer, String> currencyConvert2 = new HashMap<>();
currencyConvert2.put(1, "Credit"); currencyConvert2.put(1, "Credit");
currencyConvert2.put(2, "Doller"); currencyConvert2.put(2, "Doller");
currencyConvert2.put(3, "Platinum"); currencyConvert2.put(3, "Platinum");
@ -183,53 +193,56 @@ public class balance extends ListenerAdapter {
currencyConvert2.put(5, "Silver"); currencyConvert2.put(5, "Silver");
int[] ids; int[] ids;
String result = ""; StringBuilder result = new StringBuilder("");
boolean allfound = true; boolean allfound = true;
String[] MsgParts; String[] MsgParts;
String reason = ""; float ammount;
float ammount = 0;
HttpURLConnection con = null; HttpURLConnection con = null;
DecimalFormat myFormatter = new DecimalFormat();
try { try {
// Aufteilen Nachricht in Bennunungen und Rest
String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(event.getMessage().getMentionedUsers().get(event.getMessage().getMentionedUsers().size()-1).getAsMention(), 2); String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(event.getMessage().getMentionedUsers().get(event.getMessage().getMentionedUsers().size() - 1).getAsMention(), 2);
MsgParts = MsgParts_exl_Mention[1].trim().split(" "); MsgParts = MsgParts_exl_Mention[1].trim().split(" ");
ids = new int[event.getMessage().getMentionedUsers().size()]; ids = new int[event.getMessage().getMentionedUsers().size()];
if(!currencyConvert.containsKey(MsgParts[1].toLowerCase())) { // Pürfen ob Angebe der Währung bekannt ist
if (!currencyConvert.containsKey(MsgParts[1].toLowerCase())) {
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[1] + " ist keine bekannte Währung").queue(); event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[1] + " ist keine bekannte Währung").queue();
return; return;
} }
// Prüfen ob Zahl legal ist
try { try {
ammount = Float.parseFloat(MsgParts[0]); ammount = Float.parseFloat(MsgParts[0]);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[MsgParts.length-2] + " ist keine gültige Zahl").queue(); event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[MsgParts.length - 2] + " ist keine gültige Zahl").queue();
return;
} }
reason = MsgParts_exl_Mention[1].trim().substring(MsgParts[0].length() + MsgParts[1].length()+2);
for(int i = 0; i< event.getMessage().getMentionedUsers().size(); i++) { // Prüfen ob alle gennanten Personen zur Zahlung gehören
if(!IdConvert.containsKey( event.getMessage().getMentionedUsers().get(i).getId())) { for (int i = 0; i < event.getMessage().getMentionedUsers().size(); i++) {
if (!IdConvert.containsKey(event.getMessage().getMentionedUsers().get(i).getId())) {
allfound = false; allfound = false;
result = result + " " + event.getMessage().getMentionedUsers().get(i).getName(); result.append(" ").append(event.getMessage().getMentionedUsers().get(i).getName());
} } else {
else { ids[i] = IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId());
ids[i] = (int) IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId());
} }
} }
if(!allfound) { if (!allfound) {
event.getChannel().sendMessage(event.getMember().getAsMention() + result + " wurde(n) nicht gefunden").queue(); event.getChannel().sendMessage(event.getMember().getAsMention() + result.toString() + " wurde(n) nicht gefunden").queue();
return; return;
} }
JSONObject payload = new JSONObject(); String reason = MsgParts_exl_Mention[1].trim().substring(MsgParts[0].length() + MsgParts[1].length() + 2);
// Aufbau Payload zur übertragung an REST Schnittstelle
JSONObject payload = new JSONObject();
payload.put("ammount", ammount); payload.put("ammount", ammount);
payload.put("currency_id", currencyConvert.get(MsgParts[1].toLowerCase())); payload.put("currency_id", currencyConvert.get(MsgParts[1].toLowerCase()));
payload.put("ids", ids); payload.put("ids", ids);
@ -242,7 +255,9 @@ public class balance extends ListenerAdapter {
con.setReadTimeout(3600); con.setReadTimeout(3600);
con.setDoInput(true); con.setDoInput(true);
con.setDoOutput(true); con.setDoOutput(true);
con.setDefaultUseCaches(false);
// Übertragen der Payload
OutputStream os = con.getOutputStream(); OutputStream os = con.getOutputStream();
BufferedWriter writer = new BufferedWriter( BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8")); new OutputStreamWriter(os, "UTF-8"));
@ -254,7 +269,7 @@ public class balance extends ListenerAdapter {
switch (status) { switch (status) {
case 200: case 200:
case 201: case 201: // Verarbeiten der Antwort
BufferedReader in = new BufferedReader( BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())); new InputStreamReader(con.getInputStream()));
String inputLine; String inputLine;
@ -263,44 +278,31 @@ public class balance extends ListenerAdapter {
content.append(inputLine); content.append(inputLine);
} }
in.close(); in.close();
JSONObject testjason = new JSONObject(content.toString()); JSONObject responseJson = new JSONObject(content.toString());
Iterator<String> keys = testjason.keys(); Iterator<String> keys = responseJson.keys();
result = ""; result = new StringBuilder("");
while(keys.hasNext()) { while (keys.hasNext()) {
String key = keys.next(); String key = keys.next();
String id = getKey(IdConvert, Integer.parseInt(key)).toString(); String id = getKey(IdConvert, Integer.parseInt(key));
if(key.equals("1")) { if (key.equals("1")) {
result += "Das Schiff bekommt: " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " "; result.append("Das Schiff bekommt: ").append(responseJson.get(key)).append(" ").append(currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase()))).append(" ");
} else {
result.append(event.getGuild().getMemberById(id).getAsMention()).append(" bekommt ").append(responseJson.get(key)).append(" ").append(currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase()))).append(" ");
} }
else {
result += event.getGuild().getMemberById(id).getAsMention() + " bekommt " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " ";
} }
/*if (testjason.get(key) instanceof JSONObject) { event.getChannel().sendMessage(event.getMember().getAsMention() + " " + result.toString()).queue();
result = result + "**" + ((JSONObject) testjason.get(key)).get("name").toString() + ":**\n";
JSONArray transaction = (JSONArray) ((JSONObject) testjason.get(key)).get("transaction");
for(int i = 0; i < transaction.length(); i++) {
result = result + (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString())));
result = result + " " + ((JSONObject) transaction.get(i)).get("currency_name").toString() + "\n";
}
}*/
}
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + result).queue();
break; break;
default: default:
System.out.println(":("); System.out.println(":(");
} }
con.disconnect(); con.disconnect();
//event.getJDA().getSelfUser(). } catch (Exception e) {
} System.out.println("problem: " + e.getMessage());
} finally {
catch (Exception e) { if (con != null) { // Verbindung schließen wenn noch offen
System.out.println("problem: "+e.getMessage());
}
finally {
if (con != null) {
try { try {
con.disconnect(); con.disconnect();
} catch (Exception ex) { } catch (Exception ex) {
@ -310,6 +312,14 @@ public class balance extends ListenerAdapter {
} }
} }
/**
* Sucht in einer Map nach Wert und gibt Schlüßel zurück
* @param map Map mit allen Werten
* @param value gesuchtet wert
* @param <K> erste Typ
* @param <V> zweiter typ
* @return <K,V>|null
*/
private <K, V> K getKey(Map<K, V> map, V value) { private <K, V> K getKey(Map<K, V> map, V value) {
for (Map.Entry<K, V> entry : map.entrySet()) { for (Map.Entry<K, V> entry : map.entrySet()) {
if (entry.getValue().equals(value)) { if (entry.getValue().equals(value)) {