Changeset 96 for trunk


Ignore:
Timestamp:
03/27/05 21:40:30 (20 years ago)
Author:
Erik Huelsmann
Message:

Extend mode tracking: Handle response to a MODE request on a channel

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/event.lisp

    r95 r96  
    186186  (let ((connection (connection message)))
    187187    (remove-user-everywhere connection (find-user connection (source message)))))
     188
     189(defmethod default-hook ((message irc-rpl_channelmodeis-message))
     190  (destructuring-bind
     191      (target &rest arguments)
     192      ;; ignore the my own nick which is the first message argument
     193      (rest (arguments message))
     194    (let* ((connection (connection message))
     195           (target (find-channel connection target))
     196           (mode-changes
     197            (when target
     198              (parse-mode-arguments connection target arguments
     199                                    :server-p (user connection)))))
     200      (dolist (change mode-changes)
     201        (destructuring-bind
     202            (op mode-name value)
     203            change
     204          (unless (has-mode-p target mode-name)
     205            (add-mode target mode-name
     206                      (make-mode connection target mode-name)))
     207          (funcall (if (char= #\+ op) #'set-mode #'unset-mode)
     208                   target mode-name value))))))
    188209
    189210(defmethod default-hook ((message irc-mode-message))
  • TabularUnified trunk/protocol.lisp

    r95 r96  
    221221                     irc-nick-message
    222222                     irc-mode-message
     223                     irc-rpl_channelmodeis-message
    223224                     ctcp-time-message
    224225                     ctcp-source-message
Note: See TracChangeset for help on using the changeset viewer.