grundlegente Umstellung + Earthdawn Implemntation
This commit is contained in:
173
src/main/java/de/ocame/wuerfelbot/Simpleroll/dice.java
Normal file
173
src/main/java/de/ocame/wuerfelbot/Simpleroll/dice.java
Normal file
@ -0,0 +1,173 @@
|
||||
package de.ocame.wuerfelbot.Simpleroll;
|
||||
|
||||
import de.ocame.wuerfelbot.Shadowrun.db_connect;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.entities.channel.ChannelType;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class dice extends ListenerAdapter {
|
||||
|
||||
private final String prefixR;
|
||||
private final String prefixRoll;
|
||||
private final String prefixHelp;
|
||||
|
||||
private final language langDe = new language("de");
|
||||
private final language langEn = new language("en");
|
||||
|
||||
private final help helpDe = new help("de");
|
||||
private final help helpEn = new help("En");
|
||||
|
||||
private language activLang;
|
||||
private help activHelp;
|
||||
|
||||
private final db_connect db;
|
||||
|
||||
private final Map<String, String> channelList = new HashMap<>();
|
||||
|
||||
|
||||
public dice() {
|
||||
this.prefixR = "/roll";
|
||||
this.prefixRoll = "/r ";
|
||||
this.prefixHelp = "/help";
|
||||
|
||||
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.getMessage().getContentRaw().startsWith(this.prefixHelp))
|
||||
|| (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"));
|
||||
}
|
||||
switch (channelList.get(event.getChannel().getId())) {
|
||||
case "en":
|
||||
activLang = langEn;
|
||||
break;
|
||||
case "de":
|
||||
default:
|
||||
activLang = langDe;
|
||||
|
||||
}
|
||||
User author = event.getAuthor();
|
||||
if (event.getMessage().getContentRaw().startsWith(this.prefixR) || event.getMessage().getContentRaw().startsWith(this.prefixRoll))
|
||||
this.roll(event);
|
||||
if (event.getMessage().getContentRaw().startsWith(this.prefixHelp))
|
||||
this.help(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();
|
||||
|
||||
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().equalsIgnoreCase("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().equalsIgnoreCase("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;
|
||||
}
|
||||
|
||||
messageInterpreter mI = new messageInterpreter(activLang, MsgParts[1]);
|
||||
|
||||
|
||||
outputBox.setColor(Color.green);
|
||||
|
||||
outputBox.setTitle(getEffectiveName(event) + " " + mI.getHeaderOutput() + ": " + mI.getResult());
|
||||
|
||||
|
||||
if(mI.isComplex())
|
||||
outputBox.setDescription(mI.getResolveOutput() + "\n" + mI.getBodyOutput());
|
||||
else
|
||||
outputBox.setDescription(mI.getBodyOutput());
|
||||
|
||||
|
||||
event.getChannel().sendMessageEmbeds(outputBox.build()).queue();
|
||||
|
||||
//System.runFinalization();
|
||||
System.gc();
|
||||
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
event.getChannel().sendMessage("Nope").queue();
|
||||
}
|
||||
catch (Exception e) {
|
||||
System.out.println("problem: " + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void help(MessageReceivedEvent event) {
|
||||
EmbedBuilder outputBox = new EmbedBuilder();
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
|
||||
outputBox.setTitle("Hallo ich exestieren aktuell in der Version: 0.10\n");
|
||||
|
||||
result.append("Ich kann aktuell folgent Wüfe:\n");
|
||||
result.append("**/r** bzw. **/roll** für Allgemeine würfe. Ohne eine angabe vom Würfeltyp wird ein W6 benuzt\n\n");
|
||||
result.append("**/sr** für Shadowrun 5\n\n");
|
||||
result.append("**/ed** für Earthdawn 4\n\n");
|
||||
result.append("**/e** bzw **/engel** für die Arcane Version von Engel\n\n");
|
||||
result.append("**/l5r** bzw **/keep** für Legend of the 5 Rings\n");
|
||||
|
||||
outputBox.setDescription(result);
|
||||
event.getChannel().sendMessageEmbeds(outputBox.build()).queue();
|
||||
}
|
||||
|
||||
|
||||
//7d4+19+1d7
|
||||
}
|
||||
Reference in New Issue
Block a user