diff --git a/pom.xml b/pom.xml
index 6f64f77..b8c76ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.pcsx2
HifumiBot
- 4.8.4
+ 4.9.0
21
21
diff --git a/src/main/java/net/pcsx2/hifumi/Scheduler.java b/src/main/java/net/pcsx2/hifumi/Scheduler.java
index 921506d..3adb9fd 100644
--- a/src/main/java/net/pcsx2/hifumi/Scheduler.java
+++ b/src/main/java/net/pcsx2/hifumi/Scheduler.java
@@ -25,7 +25,9 @@
import java.util.HashMap;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory;
@@ -36,11 +38,17 @@
public class Scheduler {
private ScheduledExecutorService threadPool;
+ private ExecutorService messageEventFIFO;
private HashMap runnables = new HashMap();
private HashMap> statuses = new HashMap>();
public Scheduler() {
this.threadPool = Executors.newScheduledThreadPool(6, new SchedulerThreadFactory("pool"));
+ this.messageEventFIFO = Executors.newSingleThreadExecutor(new SchedulerThreadFactory("msg-evt-fifo"));
+ }
+
+ public void addToMessageEventFIFO(Runnable runnable) {
+ this.messageEventFIFO.submit(runnable);
}
/**
diff --git a/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java b/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java
index 2456759..3a86ab2 100644
--- a/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java
+++ b/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java
@@ -32,7 +32,7 @@ public class MessageEventListener extends ListenerAdapter {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
- HifumiBot.getSelf().getScheduler().runOnce(() -> {
+ HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> {
// Store the time of this event handler firing
Instant now = Instant.now();
@@ -133,7 +133,7 @@ public void onMessageReceived(MessageReceivedEvent event) {
@Override
public void onMessageDelete(MessageDeleteEvent event) {
- HifumiBot.getSelf().getScheduler().runOnce(() -> {
+ HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> {
Database.insertMessageDeleteEvent(event);
MessageObject deletedMessage = Database.getLatestMessage(event.getMessageId());
@@ -148,7 +148,7 @@ public void onMessageDelete(MessageDeleteEvent event) {
@Override
public void onMessageBulkDelete(MessageBulkDeleteEvent event) {
- HifumiBot.getSelf().getScheduler().runOnce(() -> {
+ HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> {
Database.insertMessageBulkDeleteEvent(event);
for (String messageId : event.getMessageIds()) {
@@ -166,7 +166,7 @@ public void onMessageBulkDelete(MessageBulkDeleteEvent event) {
@Override
public void onMessageUpdate(MessageUpdateEvent event) {
- HifumiBot.getSelf().getScheduler().runOnce(() -> {
+ HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> {
MessageObject beforeEditMessage = Database.getLatestMessage(event.getMessageId());
if (!HifumiBot.getSelf().getPermissionManager().hasPermission(PermissionLevel.ADMIN, event.getMember())) {