MissingIdentifier/src/main/java/Modules/Shuffle.java

97 lines
3.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.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.Color;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
/**
* @author https://www.Hiajen.de
*/
public class Shuffle extends SuperModule{
public static final String command = "shufflerole";
private static final String desc = "changes color of shufflerole randomly\n" +
"`shufflerole setRole @ROLE` Set role to shuffle";
private final Logger logger = LoggerFactory.getLogger(Shuffle.class);
private long role;
public Shuffle(GuildController guildController, JSONObject config){
super(command, guildController, config);
if (!config.containsKey("role")){
getConfig().put("role", "123");
safeConfig(getConfig());
}
// JDA api, long role, long guild
this.role = Long.parseLong(getConfig().get("role").toString());
shuffleColor();
}
private void shuffleColor(){
TimerTask repeatedTask = new TimerTask() {
public void run() {
//logger.debug("shuffle role color");
Random r = new Random();
getGuildController().getJda().getGuildById(getGuildController().getGUILD_ID()).getRoleById(role)
.getManager().setColor(new Color(r.nextFloat(),r.nextFloat(),r.nextFloat())).queue();
}
};
Timer timer = new Timer();
timer.schedule(repeatedTask, TimeUnit.SECONDS.toMillis(10), TimeUnit.SECONDS.toMillis(120));
}
@Override
public String getCommand() {
return command;
}
@Override
public String getDescription() {
return desc;
}
@Override
public void execute(GenericEvent event) {
if (event instanceof GuildMessageReceivedEvent){
GuildMessageReceivedEvent thisEvent = (GuildMessageReceivedEvent) event;
if (!isCommand(thisEvent.getMessage()))
return;
if (checkForCommand(thisEvent.getMessage().getContentRaw(), "setRole") && checkForAdmin(thisEvent.getMember())){
if (thisEvent.getMessage().getMentionedRoles().size() == 1){
getConfig().replace("role", thisEvent.getMessage().getMentionedRoles().get(0).getIdLong());
role = thisEvent.getMessage().getMentionedRoles().get(0).getIdLong();
thisEvent.getChannel().sendMessage("okay changed Role!").queue();
safeConfig(getConfig());
} else {
thisEvent.getChannel().sendMessage("Please mention one Role!").queue(m -> m.delete().queueAfter(1, TimeUnit.MINUTES));
}
}
}
}
@Override
public String showSettings() {
return "ROLE: `" + ((getGuildController().getJda().getRoleById(role) == null) ? "none" : getGuildController().getJda().getRoleById(role).getName()) + "`";
}
}