Search in sources :

Example 1 with CommandProcessor

use of io.kamax.mxisd.as.processor.command.CommandProcessor in project mxisd by kamax-io.

the class MessageEventProcessor method process.

@Override
public void process(JsonObject ev, _MatrixID sender, String roomId) {
    MatrixJsonRoomMessageEvent msgEv = new MatrixJsonRoomMessageEvent(ev);
    if (StringUtils.equals("m.notice", msgEv.getBodyType())) {
        log.info("Ignoring automated message");
        return;
    }
    _MatrixRoom room = client.getRoom(roomId);
    if (!m.getProfile().hasAnyRole(sender, m.getConfig().getAppsvc().getFeature().getAdmin().getAllowedRoles())) {
        room.sendNotice("You are not allowed to interact with me.");
        return;
    }
    List<_MatrixID> joinedUsers = room.getJoinedUsers().stream().map(_MatrixUserProfile::getId).collect(Collectors.toList());
    boolean joinedWithMainUser = joinedUsers.contains(client.getWhoAmI());
    boolean isAdminPrivate = joinedWithMainUser && joinedUsers.size() == 2;
    if (!StringUtils.equals("m.text", msgEv.getBodyType())) {
        log.info("Unsupported message event type: {}", msgEv.getBodyType());
        return;
    }
    String command = msgEv.getBody();
    if (!isAdminPrivate) {
        if (!StringUtils.startsWith(command, "!" + Mxisd.Name + " ")) {
            // Not for us
            return;
        }
        command = command.substring(("!" + Mxisd.Name + " ").length());
    }
    try {
        CommandLineParser p = new DefaultParser();
        CommandLine cmdLine = p.parse(new Options(), command.split(" ", 0));
        String cmd = cmdLine.getArgList().get(0);
        CommandProcessor cp = processors.get(cmd);
        if (Objects.isNull(cp)) {
            room.sendNotice("Unknown command: " + command + "\n\n" + getHelp());
        } else {
            cp.process(m, client, room, cmdLine);
        }
    } catch (ParseException e) {
        room.sendNotice("Invalid input" + "\n\n" + getHelp());
    } catch (RuntimeException e) {
        room.sendNotice("Error when running command: " + e.getMessage());
    }
}
Also used : MatrixJsonRoomMessageEvent(io.kamax.matrix.json.event.MatrixJsonRoomMessageEvent) InviteCommandProcessor(io.kamax.mxisd.as.processor.command.InviteCommandProcessor) LookupCommandProcessor(io.kamax.mxisd.as.processor.command.LookupCommandProcessor) PingCommandProcessor(io.kamax.mxisd.as.processor.command.PingCommandProcessor) CommandProcessor(io.kamax.mxisd.as.processor.command.CommandProcessor) io.kamax.matrix.hs._MatrixRoom(io.kamax.matrix.hs._MatrixRoom) io.kamax.matrix._MatrixID(io.kamax.matrix._MatrixID)

Aggregations

io.kamax.matrix._MatrixID (io.kamax.matrix._MatrixID)1 io.kamax.matrix.hs._MatrixRoom (io.kamax.matrix.hs._MatrixRoom)1 MatrixJsonRoomMessageEvent (io.kamax.matrix.json.event.MatrixJsonRoomMessageEvent)1 CommandProcessor (io.kamax.mxisd.as.processor.command.CommandProcessor)1 InviteCommandProcessor (io.kamax.mxisd.as.processor.command.InviteCommandProcessor)1 LookupCommandProcessor (io.kamax.mxisd.as.processor.command.LookupCommandProcessor)1 PingCommandProcessor (io.kamax.mxisd.as.processor.command.PingCommandProcessor)1