From c13c3fa4d6a3cd7604f9e9a1009415fb672d0f72 Mon Sep 17 00:00:00 2001 From: Boutade Date: Thu, 26 Sep 2019 08:34:45 -0500 Subject: created auto-joiner to respond to invites --- utility-apps.lisp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'utility-apps.lisp') diff --git a/utility-apps.lisp b/utility-apps.lisp index 3280289..f6b4416 100644 --- a/utility-apps.lisp +++ b/utility-apps.lisp @@ -18,6 +18,7 @@ :do (format stream "~a: ~a~%" k v))) (defmethod handle-event :after ((log message-log) room (event timeline-event)) + (print "Joined Room Message/Timeline Event" (output log)) (let ((fields `(("room" . ,room) ("sender" . ,(sender event)) ("event type" . ,(event-type event)) @@ -29,6 +30,18 @@ (defmethod handle-event :after ((log message-log) room (event room-state-event)) + (print "Joined Room State Event" (output log)) + (let ((fields `(("room" . ,room) + ("sender" . ,(sender event)) + ("event type" . ,(event-type event)) + ("state key" . ,(state-key event)) + ("content" . ,(event-content event))))) + (print-assoc fields (output log)) + (terpri (output log)))) + + +(defmethod handle-event :after ((log message-log) room (event invitation-event)) + (print "Invitation Event" (output log)) (let ((fields `(("room" . ,room) ("sender" . ,(sender event)) ("event type" . ,(event-type event)) @@ -102,3 +115,23 @@ (and like (search name (room-name room) :test #'string-equal))) :collect (if full room (room-id room))))) + +;;; Basic Joiner Bot + +(defclass auto-joiner () ()) + +(defmethod handle-event :after ((client auto-joiner) room-id (event invitation-event)) + (when (equal "invite" + (getf (event-content event) :|join_rule|)) + (join-room client room-id))) + +(defparameter +join-room-path+ "/_matrix/client/r0/rooms/~a/join") + + + +(defun join-room (client room-id) + (let ((body (list :|roomId| room-id)) + (url (format nil +join-room-path+ room-id))) + (send (client url body :method :post :wrap make-basic-json) + (format *standard-output* "JOINED ROOM ~a" room-id) + (format *error-output* "JOIN ROOM FAILED ~a" room-id)))) -- cgit v1.2.3