diff options
-rw-r--r-- | granolin.lisp | 7 | ||||
-rw-r--r-- | package.lisp | 2 | ||||
-rw-r--r-- | utility-apps.lisp | 23 |
3 files changed, 24 insertions, 8 deletions
diff --git a/granolin.lisp b/granolin.lisp index 68534cb..ed25128 100644 --- a/granolin.lisp +++ b/granolin.lisp @@ -119,6 +119,7 @@ (def-json-wrap room-state-event (event-content :|content|) + (sender :|sender|) (event-type :|type|) (event-id :|event_id|) (state-key :|state_key|) @@ -267,18 +268,18 @@ ;; handle the timeline events (aka room events) (dolist (ob (getob room :|timeline| :|events|)) (setf (timeline-event-data message-event) ob) - (handle-timeline-event client room-id message-event)) + (handle-event client room-id message-event)) ;; handle state chnage events (aka state events) (dolist (ob (getob room :|state| :|events|)) (setf (room-state-event-data state-event) ob) - (handle-room-state-event client room-id state-event))))) + (handle-event client room-id state-event))))) (defun process-invited-room-events (client) (let ((invite-event (make-invitation-event :data nil))) (loop :for (room-id room . ignore) :on (invited-rooms *response-object*) :by #'cddr :do (dolist (ob (getob room :|invite_state| :|events|)) (setf (invitation-event-data invite-event) ob) - (handle-invitation-event client room-id invite-event))))) + (handle-event client room-id invite-event))))) ;;; bot loop diff --git a/package.lisp b/package.lisp index 32cd32a..aa68439 100644 --- a/package.lisp +++ b/package.lisp @@ -30,5 +30,5 @@ #:sync #:start - #:stop + #:stop )) diff --git a/utility-apps.lisp b/utility-apps.lisp index 7ea4b21..0fdd3fb 100644 --- a/utility-apps.lisp +++ b/utility-apps.lisp @@ -9,9 +9,24 @@ :documentation "An output stream to which messages are logged." ))) +(defun print-assoc (alist &optional (stream t)) + (loop :for (k . v) :in alist + :do (format stream "~a: ~a~%" k v))) + (defmethod handle-event :after ((log message-log) room (event timeline-event)) - (format (output log) "~a in ~a: ~a~%" - (sender event) - room - (msg-body event))) + (let ((fields `(("sender" . ,(sender event)) + ("event type" . ,(event-type event)) + ("message type" . ,(msg-type event)) + ("messge body" . ,(msg-body event))))) + (print-assoc fields (output log)) + (terpri (output log)))) + + +(defmethod handle-event :after ((log message-log) room (event room-state-event)) + (let ((fields `(("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)))) |