mirror of https://github.com/bvn13/JIrcBot.git
fixed bug: double answering with deferred message if user prints into chat very quickly
parent
6cbf281698
commit
ebb4002892
4
pom.xml
4
pom.xml
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<groupId>ru.bvn13</groupId>
|
<groupId>ru.bvn13</groupId>
|
||||||
<artifactId>jircbot</artifactId>
|
<artifactId>jircbot</artifactId>
|
||||||
<version>2.2.1</version>
|
<version>2.2.2</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -18,8 +18,6 @@
|
||||||
|
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<bot.version>2.2.1</bot.version>
|
|
||||||
|
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
|
|
||||||
<pircbotx.version>2.3-SNAPSHOT</pircbotx.version>
|
<pircbotx.version>2.3-SNAPSHOT</pircbotx.version>
|
||||||
|
|
|
@ -16,7 +16,10 @@ import ru.bvn13.jircbot.documentation.DocumentationProvider;
|
||||||
import ru.bvn13.jircbot.documentation.ListenerDescription;
|
import ru.bvn13.jircbot.documentation.ListenerDescription;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import static ru.bvn13.jircbot.documentation.ListenerDescription.CommandDescription;
|
import static ru.bvn13.jircbot.documentation.ListenerDescription.CommandDescription;
|
||||||
|
|
||||||
|
@ -36,6 +39,8 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements
|
||||||
|
|
||||||
private DeferredMessageService deferredMessageService;
|
private DeferredMessageService deferredMessageService;
|
||||||
|
|
||||||
|
private Map<String, Object> mutexes = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public DeferredMessagesListener(DocumentationProvider documentationProvider) {
|
public DeferredMessagesListener(DocumentationProvider documentationProvider) {
|
||||||
registerDescription(documentationProvider);
|
registerDescription(documentationProvider);
|
||||||
|
@ -127,18 +132,21 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void sendDeferredMessage(final MessageEvent event) {
|
private void sendDeferredMessage(final MessageEvent event) {
|
||||||
|
|
||||||
if (event.getUser() != null) {
|
if (event.getUser() != null) {
|
||||||
String userIdent = event.getUser().getNick() + "!" + event.getUser().getLogin() + "@" + event.getUser().getHostname();
|
String userIdent = event.getUser().getNick() + "!" + event.getUser().getLogin() + "@" + event.getUser().getHostname();
|
||||||
|
Object mutex = mutexes.containsKey(userIdent) ? mutexes.get(userIdent) : new Object();
|
||||||
|
mutexes.put(userIdent, mutex);
|
||||||
|
|
||||||
List<DeferredMessage> deferredMessages = deferredMessageService.getDeferredMessagesForUser(this.getChannelName(event), event.getUser().getNick().toLowerCase(), userIdent);
|
synchronized (mutex) {
|
||||||
if (deferredMessages != null && deferredMessages.size() > 0) {
|
List<DeferredMessage> deferredMessages = deferredMessageService.getDeferredMessagesForUser(this.getChannelName(event), event.getUser().getNick().toLowerCase(), userIdent);
|
||||||
DeferredMessage msg = deferredMessages.get(0);
|
if (deferredMessages != null && deferredMessages.size() > 0) {
|
||||||
String more = "" + (deferredMessages.size() > 1 ? " (" + (deferredMessages.size() - 1) + " message/-s more)" : "");
|
DeferredMessage msg = deferredMessages.get(0);
|
||||||
event.respond("User " + msg.getSender() + " at " + dt.format(msg.getDtCreated()) + " told you" + more + ": " + msg.getMessage());
|
String more = "" + (deferredMessages.size() > 1 ? " (" + (deferredMessages.size() - 1) + " message/-s more)" : "");
|
||||||
deferredMessageService.markMessageWasSent(msg);
|
event.respond("User " + msg.getSender() + " at " + dt.format(msg.getDtCreated()) + " told you" + more + ": " + msg.getMessage());
|
||||||
|
deferredMessageService.markMessageWasSent(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
jircbot.version=2.2.1
|
jircbot.version=2.2.2
|
||||||
|
|
||||||
jircbot.config=config.json
|
jircbot.config=config.json
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue