added scheduling support

added remind command
added support for parameters with spaces (they are contained by ")
fixed support for remainder parameters
added maxlength support for parameters
added ability to embed templates, to have a text as well
moved properties to a more appropriate position
added method do parse a duration
This commit is contained in:
Sheldan
2020-03-28 20:12:59 +01:00
parent e0474a4c98
commit 03e81a025b
64 changed files with 1318 additions and 125 deletions

View File

@@ -0,0 +1,54 @@
package dev.sheldan.abstracto.utility.models;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import java.time.Instant;
@Entity
@Table(name="reminder")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter @Setter
public class Reminder {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
private Long id;
@Getter
@ManyToOne
@JoinColumn(name = "remindedUser")
private AUserInAServer toBeReminded;
@Getter
private Long messageId;
@Getter
@ManyToOne
@JoinColumn(name = "channelId")
private AChannel channel;
@Getter
@ManyToOne
@JoinColumn(name = "serverId")
private AServer server;
@Getter
private Instant reminderDate;
@Getter
private Instant targetDate;
@Getter
private String text;
@Getter
private boolean reminded;
}

View File

@@ -0,0 +1,21 @@
package dev.sheldan.abstracto.utility.models.template;
import dev.sheldan.abstracto.core.models.ServerContext;
import dev.sheldan.abstracto.core.utils.MessageUtils;
import dev.sheldan.abstracto.utility.models.Reminder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
@Getter
@Setter
@SuperBuilder
public class ExecutedReminderModel extends ServerContext {
private Reminder reminder;
private Member member;
public String getMessageUrl() {
return MessageUtils.buildMessageUrl(this.reminder.getServer().getId() ,this.reminder.getChannel().getId(), this.reminder.getMessageId());
}
}

View File

@@ -0,0 +1,17 @@
package dev.sheldan.abstracto.utility.models.template;
import dev.sheldan.abstracto.core.models.UserInitiatedServerContext;
import dev.sheldan.abstracto.utility.models.Reminder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Message;
@Getter
@Setter
@SuperBuilder
public class ReminderModel extends UserInitiatedServerContext {
private String remindText;
private Reminder reminder;
private Message message;
}

View File

@@ -0,0 +1,11 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.template.ReminderModel;
import java.time.Duration;
public interface ReminderService {
void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel);
void executeReminder(Long reminderId);
}

View File

@@ -0,0 +1,11 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
import dev.sheldan.abstracto.utility.models.Reminder;
import java.time.Instant;
public interface ReminderManagementService {
Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId);
Reminder loadReminder(Long reminderId);
}