diff --git a/build.gradle b/build.gradle index 7ed7d4b..71c1d44 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { version '0.2' -def jdaVersion = '3.8.1_447' +def jdaVersion = '3.8.3_460' apply plugin: 'java' diff --git a/src/main/java/AtlasGruppe/groupchange.java b/src/main/java/AtlasGruppe/groupchange.java deleted file mode 100644 index 567e6d4..0000000 --- a/src/main/java/AtlasGruppe/groupchange.java +++ /dev/null @@ -1,117 +0,0 @@ -package AtlasGruppe; - -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.impl.RoleImpl; -import net.dv8tion.jda.core.events.message.MessageReceivedEvent; -import net.dv8tion.jda.core.hooks.ListenerAdapter; -import net.dv8tion.jda.core.exceptions.InsufficientPermissionException; - - -public class groupchange extends ListenerAdapter { - - private String prefixPromote; - private String prefixDegradation; - - - public groupchange() { - this.prefixPromote = "!add"; - this.prefixDegradation = "!remove"; - - } - - @Override - public void onMessageReceived(MessageReceivedEvent event) { - if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) && !event.getMessage().getContentRaw().startsWith(this.prefixDegradation)) || event.getChannelType() != ChannelType.TEXT) { - return; - } - - User author = event.getAuthor(); - if (!author.isBot()) { - if (event.getMessage().getContentRaw().startsWith(this.prefixPromote + " ")) { - this.changeGroup(event, true); - } else if (event.getMessage().getContentRaw().startsWith(this.prefixDegradation + " ")) { - this.changeGroup(event, false); - } - } - } - - private void changeGroup(MessageReceivedEvent event, Boolean promote) { - - Member MentionedMember = null; - User MentionedUser = null; - boolean roleCheck = false; - - try { - - Role targetRole = event.getGuild().getRolesByName("Test2", true).get(0); - Role authorizedRole = event.getGuild().getRolesByName("Test2", true).get(0); - - if (event.getMessage().getMentionedUsers().isEmpty()) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " Benutzer nicht gefunden").queue(); - return; - } - - MentionedUser = event.getMessage().getMentionedUsers().get(0); - - if (MentionedUser.isBot()) { // Ziel darf kein Bot sein - event.getChannel().sendMessage(event.getMember().getAsMention() + " Finger weg von den Bots!").queue(); - return; - } - - MentionedMember = event.getGuild().getMemberById(MentionedUser.getId()); - - roleCheck = false; - for (Object x : event.getMember().getRoles().toArray()) { - if (((RoleImpl) x).getId().equals(authorizedRole.getId())) { // hat Absender die Notwendig Gruppe - roleCheck = true; - break; - } - } - if (!roleCheck) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " Du bist nicht berechtigt den Befehl auszuführen").queue(); - return; - } - - if (promote) { - roleCheck = false; - for (Object x : MentionedMember.getRoles().toArray()) { - if (((RoleImpl) x).getId().equals(targetRole.getId())) { // hat Ziel bereits die Gruppe? - roleCheck = true; - break; - } - } - if (roleCheck) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MentionedMember.getEffectiveName() + " hat bereits die Gruppe " + targetRole.getName()).queue(); - return; - } - event.getGuild().getController().addSingleRoleToMember(MentionedMember, targetRole).queue(); - event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MentionedMember.getEffectiveName() + " wurde der Gruppe " + targetRole.getName() + " zugeteilt").queue(); - } else { - roleCheck = false; - for (Object x : MentionedMember.getRoles().toArray()) { - if (((RoleImpl) x).getId().equals(targetRole.getId())) { // hat Ziel bereits die Gruppe? - roleCheck = true; - break; - } - } - if (!roleCheck) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MentionedMember.getEffectiveName() + " ist nicht in der Gruppe " + targetRole.getName()).queue(); - return; - } - event.getGuild().getController().removeSingleRoleFromMember(MentionedMember, targetRole).queue(); - event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MentionedMember.getEffectiveName() + " wurde aus der Gruppe " + targetRole.getName() + " entfernt").queue(); - } - - } catch (InsufficientPermissionException e) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " " + e.getMessage()).queue(); - } catch (Exception e) { - //System.out.println("problem: "+e.getMessage()); - } - - } - - -} diff --git a/src/main/java/Serenity/balance.java b/src/main/java/Serenity/balance.java new file mode 100644 index 0000000..ec4c548 --- /dev/null +++ b/src/main/java/Serenity/balance.java @@ -0,0 +1,321 @@ +package Serenity; + +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.impl.RoleImpl; +import net.dv8tion.jda.core.events.message.MessageReceivedEvent; +import net.dv8tion.jda.core.exceptions.InsufficientPermissionException; +import net.dv8tion.jda.core.hooks.ListenerAdapter; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public class balance extends ListenerAdapter { + + private String prefixPromote; + private String prefixDegradation; + private String prefixDetail; + + + public balance() { + this.prefixPromote = "!info"; + this.prefixDegradation = "!add "; + this.prefixDetail = "!detail"; + + } + + @Override + public void onMessageReceived(MessageReceivedEvent event) { + if(event.getMessage().getContentRaw().startsWith("!ende")) { + event.getJDA().shutdown(); + } + if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) && + !event.getMessage().getContentRaw().startsWith(this.prefixDegradation) && + !event.getMessage().getContentRaw().startsWith(this.prefixDetail)) || event.getChannelType() != ChannelType.TEXT) { + return; + } + + User author = event.getAuthor(); + if (!author.isBot()) { + if(event.getMessage().getContentRaw().startsWith(this.prefixPromote)) + this.getInfo(event); + else if(event.getMessage().getContentRaw().startsWith(this.prefixDegradation)) + this.addTransaction(event); + else if(event.getMessage().getContentRaw().startsWith(this.prefixDetail)) + this.getInfo(event, true); + + } + } + private void getInfo(MessageReceivedEvent event) { + this.getInfo(event, false); + } + private void getInfo(MessageReceivedEvent event, Boolean detail) { + HttpURLConnection con = null; + String result = ""; + DecimalFormat myFormatter = new DecimalFormat(); + + Map IdConvert = new HashMap(); + IdConvert.put("256888865103544321", 2); // Niclos + IdConvert.put("495895196685303818", 3); // Birgit + IdConvert.put("385865287586545676", 7); // Felix + IdConvert.put("493359873480720384", 5); // orko + IdConvert.put("339859242917953537", 4); // christian + IdConvert.put("397055491488088065", 6); // Filip + IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff + + try { + String parameter = ""; + if(event.getMessage().getMentionedUsers().size() > 0) { + if(IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId())) + parameter = "?id=" + (IdConvert.get(event.getMessage().getMentionedUsers().get(0).getId())); + } + else { + parameter = "?id=1"; + } + if(detail) { + parameter += "&detail=1"; + } + URL url = new URL("http://localhost/REST/balance" + parameter); + con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + con.setConnectTimeout(3600); + con.setReadTimeout(360); + con.setUseCaches(false); + con.connect(); + + int status = con.getResponseCode(); + switch (status) { + case 200: + case 201: + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer content = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + in.close(); + JSONObject testjason = new JSONObject(content.toString()); + Iterator keys = testjason.keys(); + + while(keys.hasNext()) { + String key = keys.next(); + if (testjason.get(key) instanceof JSONObject) { + result += "**" + ((JSONObject) testjason.get(key)).get("name").toString() + ":**\n"; + result += "```"; + JSONArray transaction = (JSONArray) ((JSONObject) testjason.get(key)).get("transaction"); + for(int i = 0; i < transaction.length(); i++) { + for (int j = 7-(myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))).length(); j > 0; j--) { + result += " "; + } + result += (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))); + + + result += " " + ((JSONObject) transaction.get(i)).get("currency_name").toString() + " "; + if(detail) { + result += " - " + ((JSONObject) transaction.get(i)).get("reason").toString(); + } + result += "\n"; + } + result += "```"; + } + } + event.getChannel().sendMessage(event.getMember().getAsMention() + "\n" + result).queue(); + break; + default: + System.out.println(":("); + } + con.disconnect(); + + } catch (Exception e) { + System.out.println("problem: "+e.getMessage()); + } + finally { + if (con != null) { + try { + con.disconnect(); + } catch (Exception ex) { + System.out.println("final fehler"); + } + } + } + + } + + private void addTransaction(MessageReceivedEvent event) { + Map IdConvert = new HashMap(); + IdConvert.put("256888865103544321", 2); // Niclos + IdConvert.put("495895196685303818", 3); // Birgit + IdConvert.put("385865287586545676", 7); // Felix + IdConvert.put("493359873480720384", 5); // orko + IdConvert.put("339859242917953537", 4); // christian + IdConvert.put("397055491488088065", 6); // Filip + IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff + + + Map currencyConvert = new HashMap(); + currencyConvert.put("credit", 1); + currencyConvert.put("c", 1); + currencyConvert.put("doller", 2); + currencyConvert.put("d", 2); + currencyConvert.put("$", 2); + currencyConvert.put("platinum", 3); + currencyConvert.put("p", 3); + currencyConvert.put("gold", 4); + currencyConvert.put("g", 4); + currencyConvert.put("silver", 5); + currencyConvert.put("s", 5); + + Map currencyConvert2 = new HashMap(); + currencyConvert2.put(1, "Credit"); + currencyConvert2.put(2, "Doller"); + currencyConvert2.put(3, "Platinum"); + currencyConvert2.put(4, "Gold"); + currencyConvert2.put(5, "Silver"); + + int[] ids; + String result = ""; + boolean allfound = true; + String[] MsgParts; + String reason = ""; + float ammount = 0; + + HttpURLConnection con = null; + DecimalFormat myFormatter = new DecimalFormat(); + + try { + + 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(" "); + + ids = new int[event.getMessage().getMentionedUsers().size()]; + + if(!currencyConvert.containsKey(MsgParts[1].toLowerCase())) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[1] + " ist keine bekannte Währung").queue(); + return; + } + try { + + ammount = Float.parseFloat(MsgParts[0]); + } catch (NumberFormatException e) { + event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[MsgParts.length-2] + " ist keine gültige Zahl").queue(); + + } + + reason = MsgParts_exl_Mention[1].trim().substring(MsgParts[0].length() + MsgParts[1].length()+2); + + for(int i = 0; i< event.getMessage().getMentionedUsers().size(); i++) { + if(!IdConvert.containsKey( event.getMessage().getMentionedUsers().get(i).getId())) { + allfound = false; + result = result + " " + event.getMessage().getMentionedUsers().get(i).getName(); + } + else { + ids[i] = (int) IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId()); + } + } + + if(!allfound) { + event.getChannel().sendMessage(event.getMember().getAsMention() + result + " wurde(n) nicht gefunden").queue(); + return; + } + + JSONObject payload = new JSONObject(); + + payload.put("ammount", ammount); + payload.put("currency_id", currencyConvert.get(MsgParts[1].toLowerCase())); + payload.put("ids", ids); + payload.put("reason", reason); + + URL url = new URL("http://localhost/REST/balance"); + con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("POST"); + con.setConnectTimeout(3600); + con.setReadTimeout(3600); + con.setDoInput(true); + con.setDoOutput(true); + + OutputStream os = con.getOutputStream(); + BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter(os, "UTF-8")); + writer.write(payload.toString()); + writer.flush(); + writer.close(); + + int status = con.getResponseCode(); + + switch (status) { + case 200: + case 201: + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer content = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + in.close(); + JSONObject testjason = new JSONObject(content.toString()); + Iterator keys = testjason.keys(); + + result = ""; + while(keys.hasNext()) { + String key = keys.next(); + String id = getKey(IdConvert, Integer.parseInt(key)).toString(); + + if(key.equals("1")) { + result += "Das Schiff bekommt: " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " "; + } + else { + result += event.getGuild().getMemberById(id).getAsMention() + " bekommt " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " "; + } + /*if (testjason.get(key) instanceof JSONObject) { + 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; + default: + System.out.println(":("); + } + con.disconnect(); + + //event.getJDA().getSelfUser(). + } + + catch (Exception e) { + System.out.println("problem: "+e.getMessage()); + } + finally { + if (con != null) { + try { + con.disconnect(); + } catch (Exception ex) { + System.out.println("final fehler"); + } + } + } + } + + private K getKey(Map map, V value) { + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue().equals(value)) { + return entry.getKey(); + } + } + return null; + } +} diff --git a/src/main/java/core/Main.java b/src/main/java/core/Main.java index b32dfa5..3ce5563 100644 --- a/src/main/java/core/Main.java +++ b/src/main/java/core/Main.java @@ -1,7 +1,7 @@ package core; -import AtlasGruppe.groupchange; +import Serenity.balance; import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.JDABuilder; import net.dv8tion.jda.core.AccountType; @@ -16,15 +16,17 @@ public class Main { public static void main(String[] args) { // Insert your bot's token here - String token = "NDA1MDQ2NDg1OTk0OTYyOTQ2.DUessg.YFKvsTLIyPwprLlEOnZc0PXWJH0"; + String token = "NTQ2ODk5MzYwMDEzODc3MjU4.D0u8wA.VfA2vJzundVhCl1-ibDiBaKuA8w"; + // iro + //String token = "NTQ2NzEwODUwOTIxMjk5OTc5.D0sL6A.1fUd5iBr3eo2tbPXofEqyumDm6w"; JDABuilder builder = new JDABuilder(AccountType.BOT); builder.setToken(token); builder.setAutoReconnect(true); builder.setStatus(OnlineStatus.ONLINE); - builder.setGame(Game.watching("Den NinjaSäuen zu")); - builder.addEventListener(new groupchange()); + builder.setGame(Game.playing("mit den Würfeln")); + builder.addEventListener(new balance()); try { JDA jda = builder.build();