only allow sniped messages to be sniped for 1 hour after deletion
All checks were successful
Deploy to Dokku / docker (ubuntu-latest) (push) Successful in 1m22s
All checks were successful
Deploy to Dokku / docker (ubuntu-latest) (push) Successful in 1m22s
This commit is contained in:
@ -17,6 +17,7 @@ import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @author Fascinated (fascinated7)
|
||||
@ -27,6 +28,7 @@ public class MessageSnipeFeature extends Feature implements EventListener {
|
||||
* The sniped messages for each guild
|
||||
*/
|
||||
private static final Map<BatGuild, List<SnipedMessage>> snipedMessages = new HashMap<>();
|
||||
private static final long SNIPED_MESSAGE_EXPIRATION = TimeUnit.HOURS.toMillis(1);
|
||||
|
||||
@Autowired
|
||||
public MessageSnipeFeature(@NonNull ApplicationContext context, @NonNull CommandService commandService) {
|
||||
@ -56,7 +58,9 @@ public class MessageSnipeFeature extends Feature implements EventListener {
|
||||
* @return the sniped messages for the given guild
|
||||
*/
|
||||
public static SnipedMessage getDeletedMessage(BatGuild guild, String channelId) {
|
||||
List<SnipedMessage> messages = snipedMessages.getOrDefault(guild, new ArrayList<>()).stream().filter(message -> message.getDeletedDate() != null)
|
||||
List<SnipedMessage> messages = snipedMessages.getOrDefault(guild, new ArrayList<>()).stream()
|
||||
.filter(message -> message.getDeletedDate() != null
|
||||
&& message.getDeletedDate().getTime() + SNIPED_MESSAGE_EXPIRATION > System.currentTimeMillis())
|
||||
.sorted(Comparator.comparing(SnipedMessage::getDeletedDate).reversed()).toList();
|
||||
for (SnipedMessage message : messages) {
|
||||
if (message.getDeletedDate() != null // Check if the message was deleted
|
||||
@ -86,13 +90,12 @@ public class MessageSnipeFeature extends Feature implements EventListener {
|
||||
|
||||
@Override
|
||||
public void onGuildMessageReceive(@NonNull BatGuild guild, @NonNull BatUser user, @NonNull MessageReceivedEvent event) {
|
||||
if (event.getAuthor().isBot()) return;
|
||||
if (guild.getFeatureProfile().isFeatureDisabled(this)) {
|
||||
if (event.getAuthor().isBot() || guild.getFeatureProfile().isFeatureDisabled(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<SnipedMessage> messages = snipedMessages.getOrDefault(guild, new ArrayList<>());
|
||||
if (messages.size() >= 10) {
|
||||
if (messages.size() >= 10) { // Only store the last 10 messages
|
||||
messages.remove(0);
|
||||
}
|
||||
messages.add(new SnipedMessage(event.getMessage(), null));
|
||||
|
Reference in New Issue
Block a user