Fix appeal reminders not properly removing themselves from the database
This commit is contained in:
parent
bb60924a63
commit
745fda134f
|
|
@ -57,7 +57,7 @@ public class ButtonRemindMeConfirm extends DiscordButton {
|
||||||
|
|
||||||
ReminderScheduler instance = ReminderScheduler.getInstance(event.getJDA());
|
ReminderScheduler instance = ReminderScheduler.getInstance(event.getJDA());
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
QueriesReminders.removeReminder(reminder.id());
|
QueriesReminders.removeReminder(reminder);
|
||||||
event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to start reminder, removing it from the database..."))
|
event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to start reminder, removing it from the database..."))
|
||||||
.setEphemeral(true).queue();
|
.setEphemeral(true).queue();
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ public class QueriesReminders {
|
||||||
preparedStatement.setLong(3, reminder.userId());
|
preparedStatement.setLong(3, reminder.userId());
|
||||||
preparedStatement.setLong(4, reminder.guildId());
|
preparedStatement.setLong(4, reminder.guildId());
|
||||||
preparedStatement.setLong(5, reminder.channelId());
|
preparedStatement.setLong(5, reminder.channelId());
|
||||||
preparedStatement.setLong(6, 0);
|
preparedStatement.setLong(6, reminder.messageId());
|
||||||
preparedStatement.setInt(7, reminder.shouldRepeat() ? 1 : 0);
|
preparedStatement.setInt(7, reminder.shouldRepeat() ? 1 : 0);
|
||||||
preparedStatement.setLong(8, reminder.creationDate());
|
preparedStatement.setLong(8, reminder.creationDate());
|
||||||
preparedStatement.setLong(9, reminder.remindDate());
|
preparedStatement.setLong(9, reminder.remindDate());
|
||||||
|
|
@ -64,18 +64,17 @@ public class QueriesReminders {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean removeReminder(int id) {
|
public static void removeReminder(Reminder reminder) {
|
||||||
String sql = "DELETE FROM new_reminders WHERE id = ?";
|
String sql = "DELETE FROM new_reminders WHERE message_id = ?";
|
||||||
try {
|
try {
|
||||||
PreparedStatement preparedStatement = Database.getDatabase().getConnection().prepareStatement(sql);
|
PreparedStatement preparedStatement = Database.getDatabase().getConnection().prepareStatement(sql);
|
||||||
|
|
||||||
preparedStatement.setInt(1, id);
|
preparedStatement.setLong(1, reminder.messageId());
|
||||||
|
|
||||||
return preparedStatement.executeUpdate() == 1;
|
preparedStatement.executeUpdate();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
Logger.altitudeLogs.error(e);
|
Logger.altitudeLogs.error(e);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<Reminder> getReminders() {
|
public static ArrayList<Reminder> getReminders() {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@ import net.dv8tion.jda.api.JDA;
|
||||||
import net.dv8tion.jda.api.entities.Guild;
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
import net.dv8tion.jda.api.entities.channel.Channel;
|
import net.dv8tion.jda.api.entities.channel.Channel;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public record Reminder (int id, String title, String description, long userId, long guildId, long channelId,
|
public record Reminder (int id, String title, String description, long userId, long guildId, long channelId,
|
||||||
long messageId, boolean shouldRepeat, long creationDate, long remindDate, ReminderType reminderType, byte[] data) {
|
long messageId, boolean shouldRepeat, long creationDate, long remindDate, ReminderType reminderType, byte[] data) {
|
||||||
|
|
||||||
|
|
@ -49,4 +51,22 @@ public record Reminder (int id, String title, String description, long userId, l
|
||||||
|
|
||||||
return guildById;
|
return guildById;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Reminder{" +
|
||||||
|
"\nid=[" + id + "]" +
|
||||||
|
"\ntitle=[" + title + "]" +
|
||||||
|
"\ndescription=[" + description + "]" +
|
||||||
|
"\nuserId=[" + userId + "]" +
|
||||||
|
"\nguildId=[" + guildId + "]" +
|
||||||
|
"\nchannelId=[" + channelId + "]" +
|
||||||
|
"\nmessageId=[" + messageId + "]" +
|
||||||
|
"\nshouldRepeat=[" + shouldRepeat + "]" +
|
||||||
|
"\ncreationDate=[" + creationDate + "]" +
|
||||||
|
"\nremindDate=[" + remindDate + "]" +
|
||||||
|
"\nreminderType=[" + reminderType + "]" +
|
||||||
|
"\ndata=[" + Arrays.toString(data) + "]" +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ public class AppealRepost extends ListenerAdapter {
|
||||||
|
|
||||||
ReminderScheduler instance = ReminderScheduler.getInstance(message.getJDA());
|
ReminderScheduler instance = ReminderScheduler.getInstance(message.getJDA());
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
QueriesReminders.removeReminder(reminder.id());
|
QueriesReminders.removeReminder(reminder);
|
||||||
Logger.altitudeLogs.warning("Unable to start reminder, removing it from the database...");
|
Logger.altitudeLogs.warning("Unable to start reminder, removing it from the database...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,9 @@ public class ReminderScheduler {
|
||||||
|
|
||||||
public synchronized void addReminder(Reminder reminder) {
|
public synchronized void addReminder(Reminder reminder) {
|
||||||
Logger.altitudeLogs.debug("Adding reminder with messageId: " + reminder.messageId());
|
Logger.altitudeLogs.debug("Adding reminder with messageId: " + reminder.messageId());
|
||||||
|
if (reminder.messageId() == 0) {
|
||||||
|
Logger.altitudeLogs.debug("Found reminder with messageId 0, dumping reminder\n" + reminder);
|
||||||
|
}
|
||||||
reminders.add(reminder);
|
reminders.add(reminder);
|
||||||
reminders.sort(Comparator.comparingLong(Reminder::remindDate));
|
reminders.sort(Comparator.comparingLong(Reminder::remindDate));
|
||||||
nextReminder = reminders.get(0);
|
nextReminder = reminders.get(0);
|
||||||
|
|
@ -66,12 +69,13 @@ public class ReminderScheduler {
|
||||||
public synchronized void removeReminder(Reminder reminder, boolean removeFromDatabase) {
|
public synchronized void removeReminder(Reminder reminder, boolean removeFromDatabase) {
|
||||||
Logger.altitudeLogs.debug("Removing reminder with messageId: " + reminder.messageId());
|
Logger.altitudeLogs.debug("Removing reminder with messageId: " + reminder.messageId());
|
||||||
reminders.remove(reminder);
|
reminders.remove(reminder);
|
||||||
|
reminders.sort(Comparator.comparingLong(Reminder::remindDate));
|
||||||
if (reminders.size() == 0)
|
if (reminders.size() == 0)
|
||||||
nextReminder = null;
|
nextReminder = null;
|
||||||
else
|
else
|
||||||
nextReminder = reminders.get(0);
|
nextReminder = reminders.get(0);
|
||||||
if (removeFromDatabase)
|
if (removeFromDatabase)
|
||||||
QueriesReminders.removeReminder(reminder.id());
|
QueriesReminders.removeReminder(reminder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void removeReminder(long messageId) {
|
public synchronized void removeReminder(long messageId) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user