summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--granolin.lisp7
-rw-r--r--package.lisp2
-rw-r--r--utility-apps.lisp23
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))))