157 lines
5.2 KiB
Java
157 lines
5.2 KiB
Java
|
package Modules;
|
||
|
|
||
|
import Controll.GuildController;
|
||
|
import Controll.SuperModule;
|
||
|
import net.dv8tion.jda.api.events.GenericEvent;
|
||
|
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
|
||
|
import org.slf4j.Logger;
|
||
|
import org.slf4j.LoggerFactory;
|
||
|
|
||
|
import java.security.SecureRandom;
|
||
|
import java.util.Arrays;
|
||
|
import java.util.regex.Matcher;
|
||
|
import java.util.regex.Pattern;
|
||
|
|
||
|
public class Dice extends SuperModule {
|
||
|
|
||
|
private final Logger logger = LoggerFactory.getLogger(Dice.class);
|
||
|
public static final String COMMAND = "dice";
|
||
|
|
||
|
/**
|
||
|
* Construcker of a Module
|
||
|
*
|
||
|
* @param guildController Guild where Module is used, each guild get its own Module
|
||
|
*/
|
||
|
public Dice(GuildController guildController) {
|
||
|
super(COMMAND, guildController);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getCommand() {
|
||
|
return COMMAND;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getDescription() {
|
||
|
return "Dice uhm some bits\n" +
|
||
|
"`-n NUMBER` number of repeats\n" +
|
||
|
"`-r NUMBER` range of digits";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void execute(GenericEvent event) {
|
||
|
|
||
|
if (event instanceof GuildMessageReceivedEvent) {
|
||
|
|
||
|
GuildMessageReceivedEvent thisEvent = (GuildMessageReceivedEvent) event;
|
||
|
|
||
|
if (!isCommand(thisEvent.getMessage()))
|
||
|
return;
|
||
|
|
||
|
logger.debug(COMMAND + "triggered");
|
||
|
|
||
|
int numberOfTimes = 1;
|
||
|
int range = 6;
|
||
|
|
||
|
Matcher m = Pattern.compile("(?is:-n [0-9]+)").matcher(thisEvent.getMessage().getContentRaw());
|
||
|
if (m.find()) {
|
||
|
numberOfTimes = Integer.parseInt(m.group(0).replaceAll("^...", ""));
|
||
|
}
|
||
|
|
||
|
m = Pattern.compile("(?is:-r [0-9]+)").matcher(thisEvent.getMessage().getContentRaw());
|
||
|
if (m.find()) {
|
||
|
range = Integer.parseInt(m.group(0).replaceAll("^...", ""));
|
||
|
}
|
||
|
|
||
|
SecureRandom r = new SecureRandom();
|
||
|
StringBuilder sb = new StringBuilder();
|
||
|
sb.append("Your dices:\n");
|
||
|
|
||
|
if (range <= 6) {
|
||
|
if (numberOfTimes < 10) {
|
||
|
for (int i = 0; i < numberOfTimes; i++) {
|
||
|
switch (r.nextInt(range + 1)) {
|
||
|
case 1:
|
||
|
sb.append(" . \n");
|
||
|
break;
|
||
|
case 2:
|
||
|
sb.append(" :\n");
|
||
|
break;
|
||
|
case 3:
|
||
|
sb.append(" :.\n");
|
||
|
break;
|
||
|
case 4:
|
||
|
sb.append(" ::\n");
|
||
|
break;
|
||
|
case 5:
|
||
|
sb.append(" :.:\n");
|
||
|
break;
|
||
|
case 6:
|
||
|
sb.append(" :::\n");
|
||
|
break;
|
||
|
default:
|
||
|
i--;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
int[] counter = new int[]{0, 0, 0, 0, 0, 0, 0};
|
||
|
for (int i = 0; i < numberOfTimes; i++) {
|
||
|
int rand = r.nextInt(range + 1);
|
||
|
if (rand > 0)
|
||
|
counter[rand]++;
|
||
|
else
|
||
|
i--;
|
||
|
}
|
||
|
|
||
|
for (int i = 1; i <= range; i++) {
|
||
|
switch (i) {
|
||
|
case 1:
|
||
|
sb.append(counter[i]).append("x - .\n");
|
||
|
break;
|
||
|
case 2:
|
||
|
sb.append(counter[i]).append("x - :\n");
|
||
|
break;
|
||
|
case 3:
|
||
|
sb.append(counter[i]).append("x - :.\n");
|
||
|
break;
|
||
|
case 4:
|
||
|
sb.append(counter[i]).append("x - ::\n");
|
||
|
break;
|
||
|
case 5:
|
||
|
sb.append(counter[i]).append("x - :.:\n");
|
||
|
break;
|
||
|
case 6:
|
||
|
sb.append(counter[i]).append("x - :::\n");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
int[] counter = new int[range+1];
|
||
|
|
||
|
Arrays.fill(counter, 0);
|
||
|
|
||
|
for (int i = 0; i < numberOfTimes; i++){
|
||
|
int rand = r.nextInt(range+1);
|
||
|
if (rand > 0)
|
||
|
counter[rand]++;
|
||
|
else
|
||
|
i--;
|
||
|
}
|
||
|
|
||
|
for (int num = 1; num <= range; num++){
|
||
|
sb.append(counter[num]).append("x ").append(num).append("\n");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
thisEvent.getChannel().sendMessage(sb.toString()).queue();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String showSettings() {
|
||
|
return null;
|
||
|
}
|
||
|
}
|