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());
|
||||
if (instance == null) {
|
||||
QueriesReminders.removeReminder(reminder.id());
|
||||
QueriesReminders.removeReminder(reminder);
|
||||
event.replyEmbeds(Util.genericErrorEmbed("Error", "Unable to start reminder, removing it from the database..."))
|
||||
.setEphemeral(true).queue();
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public class QueriesReminders {
|
|||
preparedStatement.setLong(3, reminder.userId());
|
||||
preparedStatement.setLong(4, reminder.guildId());
|
||||
preparedStatement.setLong(5, reminder.channelId());
|
||||
preparedStatement.setLong(6, 0);
|
||||
preparedStatement.setLong(6, reminder.messageId());
|
||||
preparedStatement.setInt(7, reminder.shouldRepeat() ? 1 : 0);
|
||||
preparedStatement.setLong(8, reminder.creationDate());
|
||||
preparedStatement.setLong(9, reminder.remindDate());
|
||||
|
|
@ -64,18 +64,17 @@ public class QueriesReminders {
|
|||
return -1;
|
||||
}
|
||||
|
||||
public static boolean removeReminder(int id) {
|
||||
String sql = "DELETE FROM new_reminders WHERE id = ?";
|
||||
public static void removeReminder(Reminder reminder) {
|
||||
String sql = "DELETE FROM new_reminders WHERE message_id = ?";
|
||||
try {
|
||||
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) {
|
||||
Logger.altitudeLogs.error(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
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.channel.Channel;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
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) {
|
||||
|
||||
|
|
@ -49,4 +51,22 @@ public record Reminder (int id, String title, String description, long userId, l
|
|||
|
||||
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());
|
||||
if (instance == null) {
|
||||
QueriesReminders.removeReminder(reminder.id());
|
||||
QueriesReminders.removeReminder(reminder);
|
||||
Logger.altitudeLogs.warning("Unable to start reminder, removing it from the database...");
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ public class ReminderScheduler {
|
|||
|
||||
public synchronized void addReminder(Reminder reminder) {
|
||||
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.sort(Comparator.comparingLong(Reminder::remindDate));
|
||||
nextReminder = reminders.get(0);
|
||||
|
|
@ -66,12 +69,13 @@ public class ReminderScheduler {
|
|||
public synchronized void removeReminder(Reminder reminder, boolean removeFromDatabase) {
|
||||
Logger.altitudeLogs.debug("Removing reminder with messageId: " + reminder.messageId());
|
||||
reminders.remove(reminder);
|
||||
reminders.sort(Comparator.comparingLong(Reminder::remindDate));
|
||||
if (reminders.size() == 0)
|
||||
nextReminder = null;
|
||||
else
|
||||
nextReminder = reminders.get(0);
|
||||
if (removeFromDatabase)
|
||||
QueriesReminders.removeReminder(reminder.id());
|
||||
QueriesReminders.removeReminder(reminder);
|
||||
}
|
||||
|
||||
public synchronized void removeReminder(long messageId) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user