174 lines
5.9 KiB
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
|
|
}
|