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 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 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 }