Added functionalities to create and manage events, including the creation of necessary database tables, context menus, modals, and scheduling tasks. Introduced `UserToMessageTracker` utility for tracking user messages within modals.
46 lines
1.3 KiB
Java
46 lines
1.3 KiB
Java
package com.alttd.schedulers;
|
|
|
|
import com.alttd.database.queries.events.Event;
|
|
import com.alttd.util.Logger;
|
|
import net.dv8tion.jda.api.entities.Message;
|
|
|
|
import java.time.Instant;
|
|
import java.util.Optional;
|
|
import java.util.TimerTask;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
public class EventTimerTask extends TimerTask {
|
|
@Override
|
|
public void run() {
|
|
checkShouldStartEvent();
|
|
}
|
|
|
|
private void checkShouldStartEvent(){
|
|
Optional<Event> nextEvent = Event.getNextEvent();
|
|
if (nextEvent.isEmpty()) {
|
|
return;
|
|
}
|
|
Event event = nextEvent.get();
|
|
if (event.getStartTime().isAfter(Instant.now())) {
|
|
return;
|
|
}
|
|
|
|
Event.removeEvent(event);
|
|
performEventAction(event);
|
|
event.getRole().delete().queueAfter(1, TimeUnit.HOURS);
|
|
checkShouldStartEvent();
|
|
}
|
|
|
|
private void performEventAction(Event event) {
|
|
Optional<Message> optionalMessage = event.getMessage();
|
|
if (optionalMessage.isEmpty()) {
|
|
Logger.altitudeLogs.error("Unable to find message for event");
|
|
return;
|
|
}
|
|
|
|
Message message = optionalMessage.get();
|
|
|
|
message.reply(String.format("%s [%s] is starting!", event.getRole().getAsMention(), event.getTitle())).queue();
|
|
}
|
|
}
|