Не получается сделать антиспам в чате

Статус
В этой теме нельзя размещать новые ответы.
Весь код: package mnm.mods.tabbychat.extra; import com.google.common.collect.Maps; imp - Pastebin.com
В общем я сделал небольшой мод для антиспама, и встретился с такой проблемой, кто он корректно работает, если чел пишит "текст" 2 раза подряд это считается, но если в промежутке его сообщений будет другое сообщение, то это уже не считается спамом в моде, нужно сделать, так чтобы другие сообщение не учитывались и желательно ещё сделать промежуток времени в котором сообщение перестанет считаться спамом.
 

timaxa007

Модератор
5,831
409
672
counter.lastMessage
Он у тебя запоминает последнее сообщение. А нужно использовать массив последних сообщений.
промежуток времени
Для каждого сообщения сохранять не только текст, но и в какое время он был написан в последний раз.
Создать массив Counter'а, в классе Counter'а добавить:
Добавить:
private Long lastTime = 0L;
lastTime это время после которого можно будет писать ("Мировое время" + "Сколько тиков"). Если ровно или больше, то удалить Counter из массива. И т.п.
---
Почему моего вопроса нету?
Есть он.
 
counter.lastMessage
Он у тебя запоминает последнее сообщение. А нужно использовать массив последних сообщений.

Для каждого сообщения сохранять не только текст, но и в какое время он был написан в последний раз.
Создать массив Counter'а, в классе Counter'а добавить:
Добавить:
private Long lastTime = 0L;
lastTime это время после которого можно будет писать ("Мировое время" + "Сколько тиков"). Если ровно или больше, то удалить Counter из массива. И т.п.
---

Есть он.
Я не понял конкретность вашего вопроса.
 

timaxa007

Модератор
5,831
409
672
@Toxenskiy, у меня нету вопроса. Я так отвечал тебе.
 
counter.lastMessage
Он у тебя запоминает последнее сообщение. А нужно использовать массив последних сообщений.

Для каждого сообщения сохранять не только текст, но и в какое время он был написан в последний раз.
Создать массив Counter'а, в классе Counter'а добавить:
Добавить:
private Long lastTime = 0L;
lastTime это время после которого можно будет писать ("Мировое время" + "Сколько тиков"). Если ровно или больше, то удалить Counter из массива. И т.п.
---

Есть он.
не вопрос, а как это применить.
 

timaxa007

Модератор
5,831
409
672
Я вроде написал...
private Map<Channel, Counter> messageMap = Maps.newHashMap();
на
private Map<Channel, ArrayList<Counter>> messageMap = Maps.newHashMap();
Или как-то так:
А
Java:
    private class Counter {
        private String lastMessage = "";
        private int spamCounter = 1;
   }
на
Java:
    private class Counter {
        private String lastMessage = "";
private Long lastTime = 0L; 
        private int spamCounter = 1;
   }
Где проверяешь на последнее сообщении, добавляешь проверку на время:
world.getTotalWorldTime() >= counter.lastTime
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху