aboutsummaryrefslogtreecommitdiff
path: root/juick-xmpp/src/main/java/com/juick/components/JuickBot.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-xmpp/src/main/java/com/juick/components/JuickBot.java')
-rw-r--r--juick-xmpp/src/main/java/com/juick/components/JuickBot.java35
1 files changed, 34 insertions, 1 deletions
diff --git a/juick-xmpp/src/main/java/com/juick/components/JuickBot.java b/juick-xmpp/src/main/java/com/juick/components/JuickBot.java
index 15e1fe66..3965570f 100644
--- a/juick-xmpp/src/main/java/com/juick/components/JuickBot.java
+++ b/juick-xmpp/src/main/java/com/juick/components/JuickBot.java
@@ -19,6 +19,8 @@ package com.juick.components;
import com.juick.Tag;
import com.juick.User;
+import com.juick.command.MessageListener;
+import com.juick.command.Processor;
import com.juick.components.s2s.StanzaListener;
import com.juick.formatters.PlainTextFormatter;
import com.juick.server.helpers.TagStats;
@@ -52,7 +54,7 @@ import java.util.stream.Collectors;
* @author ugnich
*/
@Component
-public class JuickBot implements StanzaListener, AutoCloseable {
+public class JuickBot implements StanzaListener, AutoCloseable, MessageListener {
private static final Logger logger = LoggerFactory.getLogger(JuickBot.class);
@@ -79,12 +81,15 @@ public class JuickBot implements StanzaListener, AutoCloseable {
private PrivacyQueriesService privacyQueriesService;
@Inject
private SubscriptionService subscriptionService;
+ @Inject
+ private Processor processor;
@PostConstruct
public void init() {
xmpp.addStanzaListener(this);
broadcastPresence(null);
pt = new PrettyTime(new Locale("ru"));
+ this.processor.setMessageListener(this);
}
public Jid getJid() {
@@ -290,6 +295,8 @@ public class JuickBot implements StanzaListener, AutoCloseable {
public Optional<String> processCommand(User user, Jid from, String input) throws InvocationTargetException,
IllegalAccessException, NoSuchMethodException {
+ return Optional.ofNullable(this.processor.execute(user, input));
+/*
Optional<Method> cmd = MethodUtils.getMethodsListWithAnnotation(getClass(), UserCommand.class).stream()
.filter(m -> Pattern.compile(m.getAnnotation(UserCommand.class).pattern(),
m.getAnnotation(UserCommand.class).patternFlags()).matcher(input).matches())
@@ -307,6 +314,7 @@ public class JuickBot implements StanzaListener, AutoCloseable {
.invoke(this, user, from, groups.toArray(new String[groups.size()])));
}
return Optional.empty();
+*/
}
public boolean incomingMessageJuick(User user_from, Message msg) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
String command = msg.getBody().trim();
@@ -602,6 +610,31 @@ public class JuickBot implements StanzaListener, AutoCloseable {
return "User not found";
}
+ @Override
+ public void sendStanza(Message message) {
+ router.sendStanza(message);
+ }
+
+ @Override
+ public void sendMessage(Message message) {
+ xmpp.sendOut(ClientMessage.from(message));
+ }
+
+ @Override
+ public void sendPresence(Presence presence) {
+ xmpp.sendOut(ClientPresence.from(presence));
+ }
+
+ @Override
+ public void messagePosted(com.juick.Message msg) {
+ //TODO
+ }
+
+ @Override
+ public void userSubscribed(User from, User to) {
+ //TODO
+ }
+
void sendReply(Jid jidTo, String txt) {
Message reply = new Message();
reply.setFrom(jid);