MissingIdentifier/src/main/java/Modules/Annoy.java

117 lines
4.3 KiB
Java

package Modules;
import Controll.GuildController;
import Controll.SuperModule;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.events.GenericEvent;
import net.dv8tion.jda.api.events.guild.GenericGuildEvent;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import org.json.simple.JSONObject;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Annoy extends SuperModule{
private String message;
public static final String COMMAND = "annoy";
public Annoy(GuildController guildController, JSONObject config){
super(COMMAND, guildController, config);
if (!config.containsKey("message")){
getConfig().put("message", "Hay, could you may self assign a role in $GUILD ?");
safeConfig(getConfig());
}
this.message = getConfig().get("message").toString();
keepPoking();
}
@Override
public String getCommand() {
return Annoy.COMMAND;
}
@Override
public String getDescription() {
return "annoy lazy people until they pick some roles :b\n" +
"`annoy setText` set Text people get annoyed with" +
"`$GUILD` and `$USER` gets replaced";
}
@Override
public void execute(GenericEvent genericEvent) {
if (!(genericEvent instanceof GenericGuildEvent))
return;
GenericGuildEvent event = (GenericGuildEvent) genericEvent;
if (event instanceof GuildMessageReceivedEvent){
GuildMessageReceivedEvent thisEvent = (GuildMessageReceivedEvent) event;
if (!isCommand(thisEvent.getMessage()))
return;
if (checkForCommand(thisEvent.getMessage().getContentRaw(), "setText")){
if (checkForAdmin(thisEvent.getMember())){
getConfig().replace("message",
thisEvent.getMessage().getContentRaw().replaceAll("(?is:^" + getGuildController().getPREFIX() + COMMAND + " setText )", ""));
safeConfig(getConfig());
thisEvent.getChannel().sendMessage("Set Annoy text to: `" +
thisEvent.getMessage().getContentRaw().replaceAll("(?is:^" + getGuildController().getPREFIX() + COMMAND + " setText )", "")
+ "`").queue();
} else {
thisEvent.getChannel().sendMessage("I am afraid, you are not allowed todo that!").queue();
}
}
}
}
@Override
public String showSettings() {
return "MESSAGE: `" + message + "`";
}
private void keepPoking(){
TimerTask repeatedTask = new TimerTask() {
public void run() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minutes = cal.get(Calendar.MINUTE);
if(hour == 9 && minutes >= 30)
for(Member m : getGuildController().getJda().getGuildById(getGuildController().getGUILD_ID()).getMembers()){
if(m.getRoles().isEmpty()){
m.getUser().openPrivateChannel().queue(
privateChannel -> privateChannel.sendMessage(
new EmbedBuilder().setDescription(
message
.replaceAll("\\$GUILD", getGuildController().getJda().getGuildById(getGuildController().getGUILD_ID()).getName())
.replaceAll("\\$USER", m.getEffectiveName())
).setTimestamp(new Date().toInstant()).setImage(
getGuildController().getJda().getGuildById(getGuildController().getGUILD_ID()).getIconUrl()
).build()).queue()
);
}
}
}
};
Timer timer = new Timer("AnnoyTimer");
long delay = 1000L;
long period = 1000L * 60L * 30L;
timer.scheduleAtFixedRate(repeatedTask, delay, period);
}
}