Create event management system, added event notifier for community events
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.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user