47 lines
1.6 KiB
Java
47 lines
1.6 KiB
Java
package InnaIrcBot.Commanders;
|
|
|
|
import InnaIrcBot.ProvidersConsumers.StreamProvider;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
public class JoinCloneHandler {
|
|
|
|
private String pattern;
|
|
private String server;
|
|
private String chanel;
|
|
private int timeFrameInSeconds;
|
|
|
|
private LocalDateTime lastCame;
|
|
private String prevUserNick;
|
|
|
|
public JoinCloneHandler(String pattern, int timeFrameInSeconds, String serverName, String chanelName){
|
|
this.pattern = pattern;
|
|
this.timeFrameInSeconds = timeFrameInSeconds;
|
|
this.server = serverName;
|
|
this.chanel = chanelName;
|
|
prevUserNick = "";
|
|
lastCame = LocalDateTime.now().minusDays(1L);
|
|
}
|
|
|
|
public void track(String userNick){
|
|
if (userNick.matches(pattern)){
|
|
if (lastCame.isAfter(LocalDateTime.now().minusSeconds(timeFrameInSeconds)) && !prevUserNick.equals(userNick)){
|
|
StreamProvider.writeToStream(server,
|
|
"MODE "+chanel+" +b *!*"+getIdentHost(userNick)+"\n"+
|
|
"MODE "+chanel+" +b *!*"+getIdentHost(prevUserNick)+"\n"+
|
|
"KICK "+chanel+" "+getNickOnly(userNick)+" :clone\n"+
|
|
"KICK "+chanel+" "+getNickOnly(prevUserNick)+" :clone"
|
|
);
|
|
}
|
|
prevUserNick = userNick;
|
|
lastCame = LocalDateTime.now();
|
|
}
|
|
}
|
|
private String getIdentHost(String fullNick){
|
|
return fullNick.replaceAll("^.*@","@");
|
|
}
|
|
private String getNickOnly(String fullNick){
|
|
return fullNick.replaceAll("!.*$","");
|
|
}
|
|
}
|