einfache Zitate hinzugfügt

This commit is contained in:
Sebastian Zeidler
2019-02-19 19:04:55 +01:00
parent e5d9c703b5
commit 75c3b67dad
3 changed files with 110 additions and 274 deletions

View File

@ -1,272 +0,0 @@
package Shadowrun;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import org.json.JSONArray;
import org.json.JSONObject;
import java.awt.*;
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;
import java.util.Random;
public class Shadowrun extends ListenerAdapter {
private String prefixSr;
private String prefixDegradation;
private String prefixDetail;
public Shadowrun() {
this.prefixSr = "!sr";
}
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if (event.getMessage().getContentRaw().startsWith("!ende")) { // nur zum Debugen #todo muss wieder raus
event.getJDA().shutdown();
}
if ((!event.getMessage().getContentRaw().startsWith(this.prefixSr)) || event.getChannelType() != ChannelType.TEXT) {
return;
}
User author = event.getAuthor();
if (!author.isBot()) {
if (event.getMessage().getContentRaw().startsWith(this.prefixSr))
this.getInfo(event);
}
}
private void getInfo(MessageReceivedEvent event) {
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) {
EmbedBuilder test = new EmbedBuilder();
test.setTitle("Das ist ein Test");
test.setColor(Color.red);
test.setDescription("Text " + event.getMember().getAsMention());
int[] verteilung = new int[6];
int dice1;
try {
String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(" ");
int rounds = Integer.parseInt(MsgParts_exl_Mention[1]);
if(rounds <= 0) {
event.getChannel().sendMessage("Nope").queue();
return;
}
for(int i = 0; i < rounds; i++) {
dice1 = new Random().nextInt(6);
verteilung[dice1]++;
}
for(int i = 0; i < 6; i++) {
float pro = verteilung[i]*100f/rounds;
test.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro), true);
}
event.getChannel().sendMessage(test.build()).queue();
}
catch (NumberFormatException e) {
event.getChannel().sendMessage("Nope").queue();
}
catch (Exception e) {
System.out.println("problem: " + e.getMessage());
} finally {
}
}
/**
* Fügt neue Transaktion hinzu
*
* @param event JDA Event
*/
private void addTransaction(MessageReceivedEvent event) {
Map<String, Integer> 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<String, Integer> 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<Integer, String> 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;
StringBuilder result = new StringBuilder("");
boolean allfound = true;
String[] MsgParts;
float ammount;
HttpURLConnection con = null;
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);
MsgParts = MsgParts_exl_Mention[1].trim().split(" ");
ids = new int[event.getMessage().getMentionedUsers().size()];
// 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();
return;
}
// Prüfen ob Zahl legal ist
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();
return;
}
// Prüfen ob alle gennanten Personen zur Zahlung gehören
for (int i = 0; i < event.getMessage().getMentionedUsers().size(); i++) {
if (!IdConvert.containsKey(event.getMessage().getMentionedUsers().get(i).getId())) {
allfound = false;
result.append(" ").append(event.getMessage().getMentionedUsers().get(i).getName());
} else {
ids[i] = IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId());
}
}
if (!allfound) {
event.getChannel().sendMessage(event.getMember().getAsMention() + result.toString() + " wurde(n) nicht gefunden").queue();
return;
}
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("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);
con.setDefaultUseCaches(false);
// Übertragen der Payload
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: // Verarbeiten der Antwort
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 responseJson = new JSONObject(content.toString());
Iterator<String> keys = responseJson.keys();
result = new StringBuilder("");
while (keys.hasNext()) {
String key = keys.next();
String id = getKey(IdConvert, Integer.parseInt(key));
if (key.equals("1")) {
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(" ");
}
}
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + result.toString()).queue();
break;
default:
System.out.println(":(");
}
con.disconnect();
} catch (Exception e) {
System.out.println("problem: " + e.getMessage());
} finally {
if (con != null) { // Verbindung schließen wenn noch offen
try {
con.disconnect();
} catch (Exception ex) {
System.out.println("final fehler");
}
}
}
}
/**
* 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) {
for (Map.Entry<K, V> entry : map.entrySet()) {
if (entry.getValue().equals(value)) {
return entry.getKey();
}
}
return null;
}
}

108
src/main/java/Shadowrun/dice.java Executable file
View File

@ -0,0 +1,108 @@
package Shadowrun;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import org.json.JSONArray;
import org.json.JSONObject;
import java.awt.*;
import java.util.Random;
public class dice extends ListenerAdapter {
private String prefixSr;
private String prefixZitat;
public dice() {
this.prefixSr = "!sr";
this.prefixZitat = "!zitat";
}
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if ((!event.getMessage().getContentRaw().startsWith(this.prefixSr) && !event.getMessage().getContentRaw().startsWith(this.prefixZitat)) || event.getChannelType() != ChannelType.TEXT) {
return;
}
User author = event.getAuthor();
if (!author.isBot()) {
if (event.getMessage().getContentRaw().startsWith(this.prefixSr))
this.roll(event);
if (event.getMessage().getContentRaw().startsWith(this.prefixZitat))
this.zitat(event);
}
}
/**
* Holt Kontostand ab
*
* @param event JDA Event
*/
private void roll(MessageReceivedEvent event) {
EmbedBuilder test = new EmbedBuilder();
test.setTitle("Das ist ein Test");
test.setColor(Color.red);
test.setDescription("Text " + event.getMember().getAsMention());
int[] verteilung = new int[6];
int dice1;
try {
String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(" ");
int rounds = Integer.parseInt(MsgParts_exl_Mention[1]);
if(rounds <= 0) {
event.getChannel().sendMessage("Nope").queue();
return;
}
for(int i = 0; i < rounds; i++) {
dice1 = new Random().nextInt(6);
verteilung[dice1]++;
}
for(int i = 0; i < 6; i++) {
float pro = verteilung[i]*100f/rounds;
test.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro), true);
}
event.getChannel().sendMessage(test.build()).queue();
}
catch (NumberFormatException e) {
event.getChannel().sendMessage("Nope").queue();
}
catch (Exception e) {
System.out.println("problem: " + e.getMessage());
} finally {
}
}
private void zitat(MessageReceivedEvent event) {
String[] quotes = new String[7];
quotes[0] = "*quiek quiek quiek*";
quotes[1] = "" +
"(\\\\_____/)\n" +
"( ͡ ͡° ͜ ʖ ͡ ͡°) *snuff snuff*\n" +
"\\\\╭☞ \\\\╭☞\n" +
"";
quotes[2] = "(づ。◕‿‿◕。)づ";
quotes[3] = "zzzZZZZZzzZZ";
quotes[4] = "piiiep";
quotes[5] = "grrrrr";
quotes[6] = "ʕᵔᴥᵔʔ =*Auto translator*=> In meiner psychophysischen Konstituton manifestiert sich eine absolute Dominanz positiver Effekte für die Individualität Deiner Person. ";
int dice = new Random().nextInt(700);
event.getChannel().sendMessage(quotes[dice%7]).queue();
}
}

4
src/main/java/core/Main.java Normal file → Executable file
View File

@ -2,7 +2,7 @@ package core;
import Serenity.balance; import Serenity.balance;
import Shadowrun.Shadowrun; import Shadowrun.dice;
import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder; import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.AccountType; import net.dv8tion.jda.core.AccountType;
@ -28,7 +28,7 @@ public class Main {
builder.setStatus(OnlineStatus.ONLINE); builder.setStatus(OnlineStatus.ONLINE);
builder.setGame(Game.playing("mit den Würfeln")); builder.setGame(Game.playing("mit den Würfeln"));
builder.addEventListener(new balance()); builder.addEventListener(new balance());
builder.addEventListener(new Shadowrun() ); builder.addEventListener(new dice() );
try { try {
JDA jda = builder.build(); JDA jda = builder.build();