;; Classes (defclass slack-client () ((self :reader self :initarg :self) (url :reader url :initarg :url) (users :accessor users :initarg :users :initform (make-hash-table :test 'equal)) (slack-info :reader slack-info :initarg :slack-info) (work-mailbox :reader work-mailbox :initform (make-instance 'chanl:bounded-channel :size 10)) (name :reader name) (waiting-pings :accessor waiting-pings :initform 0) (latest-id :accessor latest-id :initform 0) (message-id :accessor message-id :initform 0) (ws-client :reader ws-client :initarg :ws-client))) (defmethod initialize-instance :after ((client slack-client) &rest r) (declare (ignore r)) (let ((self (self client))) (setf (slot-value client 'name) (gethash "name" self)))) (defmethod handle-message ((type (eql :error)) data) (format t "~&~s~%" (hash-table-alist (gethash "error" data))))