Files
W-rfel-Bot/src/main/java/de/ocame/wuerfelbot/Simpleroll/dice.java

174 lines
5.9 KiB
Java

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
}