Einfaches /roll Modul
This commit is contained in:
219
src/main/java/Simpleroll/dice.java
Normal file
219
src/main/java/Simpleroll/dice.java
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
package Simpleroll;
|
||||||
|
|
||||||
|
import Shadowrun.db_connect;
|
||||||
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
|
import net.dv8tion.jda.api.entities.ChannelType;
|
||||||
|
import net.dv8tion.jda.api.entities.User;
|
||||||
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||||
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
public class dice extends ListenerAdapter {
|
||||||
|
|
||||||
|
private String prefixR;
|
||||||
|
private String prefixRoll;
|
||||||
|
|
||||||
|
private language langDe = new language("de");
|
||||||
|
private language langEn = new language("en");
|
||||||
|
|
||||||
|
private help helpDe = new help("de");
|
||||||
|
private help helpEn = new help("En");
|
||||||
|
|
||||||
|
private language activLang;
|
||||||
|
private help activHelp;
|
||||||
|
|
||||||
|
private db_connect db;
|
||||||
|
|
||||||
|
private Map<String, String> channelList = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
public dice() {
|
||||||
|
this.prefixR = "/roll";
|
||||||
|
this.prefixRoll = "/r ";
|
||||||
|
|
||||||
|
this.db = new db_connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessageReceived(MessageReceivedEvent event) {
|
||||||
|
if ((!event.getMessage().getContentRaw().startsWith(this.prefixR)
|
||||||
|
&& !event.getMessage().getContentRaw().startsWith(this.prefixRoll))
|
||||||
|
|| (event.getChannelType() != ChannelType.TEXT && event.getChannelType() != ChannelType.PRIVATE)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!channelList.containsKey(event.getChannel().getId())) {
|
||||||
|
Map<String, String> Einstellungen = db.getChannelSettings(event.getChannel().getId());
|
||||||
|
channelList.put(event.getChannel().getId(), Einstellungen.get("lang").toString());
|
||||||
|
}
|
||||||
|
switch (channelList.get(event.getChannel().getId())) {
|
||||||
|
case "de":
|
||||||
|
activLang = langDe;
|
||||||
|
break;
|
||||||
|
case "en":
|
||||||
|
activLang = langEn;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
activLang = langDe;
|
||||||
|
|
||||||
|
}
|
||||||
|
User author = event.getAuthor();
|
||||||
|
if (event.getMessage().getContentRaw().startsWith(this.prefixR) || event.getMessage().getContentRaw().startsWith(this.prefixRoll))
|
||||||
|
this.roll(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String getEffectiveName(MessageReceivedEvent event) {
|
||||||
|
if(event.getMember() == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return event.getMember().getEffectiveName() + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getAsMention(MessageReceivedEvent event) {
|
||||||
|
if(event.getMember() == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return event.getMember().getAsMention() + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rolltest
|
||||||
|
*
|
||||||
|
* @param event JDA Event
|
||||||
|
*/
|
||||||
|
private void roll(MessageReceivedEvent event) {
|
||||||
|
|
||||||
|
EmbedBuilder outputBox = new EmbedBuilder();
|
||||||
|
|
||||||
|
int[] verteilung = new int[6];
|
||||||
|
int dice1;
|
||||||
|
int numberOfDice = 1;
|
||||||
|
int diceart = 6;
|
||||||
|
StringBuilder result = new StringBuilder("");
|
||||||
|
|
||||||
|
int hits = 0;
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
String ContentRaw = event.getMessage().getContentRaw();
|
||||||
|
|
||||||
|
// Prüfen ob Leerer Command gesendet wird
|
||||||
|
String[] MsgParts = ContentRaw.replace(" ", " ").split(" ", 2);
|
||||||
|
|
||||||
|
if(MsgParts.length < 2) {
|
||||||
|
String message = activLang.emptyCommand;
|
||||||
|
message = message.replace("%command%", this.prefixRoll);
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(MsgParts[1].trim().matches(".*[^0-9].*")) { // es wurden andere zeichen als Zahlen gefunden
|
||||||
|
if(MsgParts[1].trim().toLowerCase().equals("de")) {
|
||||||
|
activLang = langDe;
|
||||||
|
channelList.put(event.getChannel().getId(), "de");
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||||
|
db.setChannelSettings(event.getChannel().getId(), "de", event.getGuild().getId(), event.getChannel().getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(MsgParts[1].trim().toLowerCase().equals("en")) {
|
||||||
|
activLang = langEn;
|
||||||
|
channelList.put(event.getChannel().getId(), "en");
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||||
|
db.setChannelSettings(event.getChannel().getId(), "en", event.getGuild().getId(), event.getChannel().getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen)
|
||||||
|
String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("[wd]");
|
||||||
|
try {
|
||||||
|
diceart = Integer.parseInt(diceInterpreter[1]);
|
||||||
|
numberOfDice = Integer.parseInt(diceInterpreter[0]);
|
||||||
|
verteilung = new int[diceart];
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e) {
|
||||||
|
String message = activLang.error;
|
||||||
|
message = message.replace("%command%", MsgParts[1].trim().toLowerCase());
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
String message = activLang.error;
|
||||||
|
message = message.replace("%command%", MsgParts[1].trim());
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
numberOfDice = Integer.parseInt(MsgParts[1].trim().replace(" ", ""));
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e) {
|
||||||
|
String message = activLang.error;
|
||||||
|
message = message.replace("%command%", MsgParts[1].trim());
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(numberOfDice <= 0) {
|
||||||
|
String message = activLang.noNegativ;
|
||||||
|
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < numberOfDice; i++) {
|
||||||
|
dice1 = new Random().nextInt(diceart);
|
||||||
|
verteilung[dice1]++;
|
||||||
|
result.append(dice1+1);
|
||||||
|
result.append(" ");
|
||||||
|
}
|
||||||
|
outputBox.setColor(Color.green);
|
||||||
|
String addition = "";
|
||||||
|
|
||||||
|
String message = activLang.basisresultText;
|
||||||
|
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||||
|
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart));
|
||||||
|
outputBox.setTitle(getEffectiveName(event) + message);
|
||||||
|
|
||||||
|
|
||||||
|
outputBox.setDescription("(" + result.toString().trim() + ")");
|
||||||
|
|
||||||
|
for(int i = 0; i < diceart; i++) {
|
||||||
|
float pro = verteilung[i]*100f/numberOfDice;
|
||||||
|
//outputBox.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getChannel().sendMessage(outputBox.build()).queue();
|
||||||
|
/*event.getChannel().sendMessage(outputBox.build()).queue(message1 -> {
|
||||||
|
message1.addReaction("sr:517528156014510111").queue();
|
||||||
|
message1.addReaction("test:517545127376322596").queue();
|
||||||
|
});*/
|
||||||
|
/*
|
||||||
|
if(event.getChannelType() == ChannelType.PRIVATE) {
|
||||||
|
db.insertDice(event.getAuthor().getName(), event.getAuthor().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
db.insertDice(event.getMember().getEffectiveName(), event.getMember().getUser().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e) {
|
||||||
|
event.getChannel().sendMessage("Nope").queue();
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
System.out.println("problem: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
28
src/main/java/Simpleroll/help.java
Normal file
28
src/main/java/Simpleroll/help.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package Simpleroll;
|
||||||
|
|
||||||
|
|
||||||
|
public class help {
|
||||||
|
|
||||||
|
private StringBuilder hilfstext;
|
||||||
|
private String sprache;
|
||||||
|
|
||||||
|
public help(String sprache) {
|
||||||
|
this.sprache = sprache;
|
||||||
|
hilfstext = new StringBuilder("");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(String befehl, String hilftext) {
|
||||||
|
if(this.hilfstext.length() > 0)
|
||||||
|
this.hilfstext.append("\n\n");
|
||||||
|
this.add("**" + befehl + "** " + hilftext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(String hilftext) {
|
||||||
|
this.hilfstext.append(hilftext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void send() {
|
||||||
|
StringBuilder ausgabe = new StringBuilder("");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
89
src/main/java/Simpleroll/language.java
Normal file
89
src/main/java/Simpleroll/language.java
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
package Simpleroll;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
|
||||||
|
public class language {
|
||||||
|
|
||||||
|
public String language = "Deutsch";
|
||||||
|
public String emptyCommand = " der %command% befehl benötigt einen Wert";
|
||||||
|
public String error = " Irgend was dummes ist passiert beim Verstehen von %command%";
|
||||||
|
public String error2 = " Irgend was dummes ist passiert beim Verstehen von %command%";
|
||||||
|
public String noNegativ = " es darf kein Negativen Wurf geben";
|
||||||
|
public String dice = "w";
|
||||||
|
public String resultText = " %numberOfDice%w%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||||
|
public String basisresultText = " %numberOfDice%w%diceart%:";
|
||||||
|
|
||||||
|
public language() {
|
||||||
|
this.readConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param lang Srache
|
||||||
|
*/
|
||||||
|
public language(String lang) {
|
||||||
|
this.readConfig(lang);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void readConfig() {
|
||||||
|
this.readConfig("de");
|
||||||
|
}
|
||||||
|
public void readConfig(String lang) {
|
||||||
|
FileInputStream input = null;
|
||||||
|
OutputStream output = null;
|
||||||
|
Properties config = new Properties();
|
||||||
|
try {
|
||||||
|
File f = new File("shadowrun.cfg");
|
||||||
|
if (f.isFile() && f.canRead()) {
|
||||||
|
|
||||||
|
input = new FileInputStream("shadowrun.cfg");
|
||||||
|
config.load(input);
|
||||||
|
if(config.containsKey(lang + ".language"))
|
||||||
|
this.language = config.getProperty(lang + ".language");
|
||||||
|
|
||||||
|
if(config.containsKey(lang + ".emptyCommand"))
|
||||||
|
this.emptyCommand = config.getProperty(lang + ".emptyCommand");
|
||||||
|
if(config.containsKey(lang + ".error"))
|
||||||
|
this.error = config.getProperty(lang + ".error");
|
||||||
|
if(config.containsKey(lang + ".error2"))
|
||||||
|
this.error2 = config.getProperty(lang + ".error2");
|
||||||
|
if(config.containsKey(lang + ".noNegativ"))
|
||||||
|
this.noNegativ = config.getProperty(lang + ".noNegativ");
|
||||||
|
if(config.containsKey(lang + ".dice"))
|
||||||
|
this.dice = config.getProperty(lang + ".dice");
|
||||||
|
if(config.containsKey(lang + ".resultText"))
|
||||||
|
this.resultText = config.getProperty(lang + ".resultText");
|
||||||
|
if(config.containsKey(lang + ".basisresultText"))
|
||||||
|
this.resultText = config.getProperty(lang + ".basisresultText");
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
output = new FileOutputStream("shadowrun.cfg");
|
||||||
|
config.setProperty(lang + ".language", this.language);
|
||||||
|
config.setProperty(lang + ".emptyCommand", this.emptyCommand);
|
||||||
|
config.setProperty(lang + ".error", this.error);
|
||||||
|
config.setProperty(lang + ".error2", this.error2);
|
||||||
|
config.setProperty(lang + ".noNegativ", this.noNegativ);
|
||||||
|
config.setProperty(lang + ".dice", this.dice);
|
||||||
|
config.setProperty(lang + ".resultText", this.resultText);
|
||||||
|
config.setProperty(lang + ".basisresultText", this.basisresultText);
|
||||||
|
config.store(output, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (input != null) {
|
||||||
|
try {
|
||||||
|
input.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
90
src/main/java/Simpleroll/messageInterpreter.java
Normal file
90
src/main/java/Simpleroll/messageInterpreter.java
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
package Simpleroll;
|
||||||
|
|
||||||
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class messageInterpreter {
|
||||||
|
|
||||||
|
private Integer diceart = 6;
|
||||||
|
private Integer numberOfDice = 1;
|
||||||
|
private Integer typ = 0;
|
||||||
|
private Integer intResult = 0;
|
||||||
|
|
||||||
|
private language activLang;
|
||||||
|
private MessageReceivedEvent event;
|
||||||
|
|
||||||
|
|
||||||
|
public Integer getDiceart() {
|
||||||
|
return diceart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getNumberOfDice() {
|
||||||
|
return numberOfDice;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getIntResult() {
|
||||||
|
return intResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNum() {
|
||||||
|
if(typ == 1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDice() {
|
||||||
|
if(typ == 2) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param event JDA Event
|
||||||
|
* @param activLang Aktive Sprache
|
||||||
|
*/
|
||||||
|
public messageInterpreter(MessageReceivedEvent event, language activLang) {
|
||||||
|
this.event = event;
|
||||||
|
this.activLang = activLang;
|
||||||
|
}
|
||||||
|
private void reset() {
|
||||||
|
diceart = 6;
|
||||||
|
numberOfDice = 1;
|
||||||
|
typ = 0;
|
||||||
|
intResult = 0;
|
||||||
|
}
|
||||||
|
public void inputInterpreter(String Input) {
|
||||||
|
reset();
|
||||||
|
Scanner sc = new Scanner(Input.trim());
|
||||||
|
|
||||||
|
if(sc.hasNextInt()) { // ist eine Zahl
|
||||||
|
typ = 1;
|
||||||
|
intResult = Integer.parseInt(Input.trim());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (Input.trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen)
|
||||||
|
String[] diceInterpreter = Input.trim().toLowerCase().replace(" ", "").split("[wd]");
|
||||||
|
try {
|
||||||
|
diceart = Integer.parseInt(diceInterpreter[1]);
|
||||||
|
numberOfDice = Integer.parseInt(diceInterpreter[0]);
|
||||||
|
typ = 2;
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
String message = activLang.error;
|
||||||
|
message = message.replace("%command%", Input.trim().toLowerCase());
|
||||||
|
//event.getChannel().sendMessage(event.getMember().getAsMention() + message).queue();
|
||||||
|
typ = -1;
|
||||||
|
throw new IllegalArgumentException( message );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
String message = activLang.error;
|
||||||
|
message = message.replace("%command%", Input.trim().toLowerCase());
|
||||||
|
typ = -1;
|
||||||
|
throw new IllegalArgumentException( message );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user