- Timestamp:
- 02/15/06 23:24:34 (19 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/event.lisp ¶
r133 r134 109 109 110 110 (defmethod default-hook ((message irc-rpl_topic-message)) 111 (setf (topic (find-channel (connection message) 112 (second (arguments message)))) 113 (trailing-argument message))) 111 (destructuring-bind 112 (target channel topic) 113 (arguments message) 114 (declare (ignore target)) 115 (setf (topic (find-channel (connection message) channel)) topic))) 114 116 115 117 (defmethod default-hook ((message irc-rpl_namreply-message)) … … 160 162 161 163 (defmethod default-hook ((message irc-join-message)) 162 (let* ((connection (connection message)) 163 (user (find-or-make-user 164 (connection message) 165 (source message) 166 :hostname (host message) 167 :username (user message))) 168 (channel (or (find-channel connection (trailing-argument message)) 169 (make-channel connection 170 :name (trailing-argument message))))) 171 (when (self-message-p message) 172 (add-channel connection channel)) 173 (add-user connection user) 174 (add-user channel user))) 164 (with-slots 165 (connection source host user arguments) 166 message 167 (destructuring-bind 168 (channel) 169 arguments 170 (let ((user (find-or-make-user connection source 171 :hostname host 172 :username user)) 173 (channel (or (find-channel connection channel) 174 (make-channel connection :name channel)))) 175 (when (self-message-p message) 176 (add-channel connection channel)) 177 (add-user connection user) 178 (add-user channel user))))) 175 179 176 180 (defmethod default-hook ((message irc-topic-message)) 177 (setf (topic (find-channel (connection message) 178 (first (arguments message)))) 179 (trailing-argument message))) 181 (with-slots 182 (connection arguments) 183 message 184 (destructuring-bind 185 (channel &optional topic) 186 arguments 187 (setf (topic (find-channel connection channel)) topic)))) 180 188 181 189 (defmethod default-hook ((message irc-part-message)) 182 (let* ((connection (connection message)) 183 (channel (find-channel connection (first (arguments message)))) 184 (user (find-user connection (source message)))) 185 (if (self-message-p message) 186 (remove-channel user channel) 187 (remove-user channel user)))) 190 (with-slots 191 (connection arguments source) 192 message 193 (destructuring-bind 194 (channel &optional text) 195 arguments 196 (let ((channel (find-channel connection channel)) 197 (user (find-user connection source))) 198 (if (self-message-p message) 199 (remove-channel user channel) 200 (remove-user channel user)))))) 188 201 189 202 (defmethod default-hook ((message irc-quit-message)) … … 194 207 195 208 (defmethod default-hook ((message irc-rpl_channelmodeis-message)) 196 (destructuring-bind 197 (target &rest arguments) 198 ;; ignore the my own nick which is the first message argument 199 (rest (arguments message)) 200 (let* ((connection (connection message)) 201 (target (find-channel connection target)) 209 (with-slots 210 (connection arguments) 211 message 212 (destructuring-bind 213 (target channel &rest mode-arguments) 214 arguments 215 (declare (ignore target)) 216 (let* ((channel (find-channel connection channel)) 202 217 (mode-changes 203 (when target204 (parse-mode-arguments connection targetarguments218 (when channel 219 (parse-mode-arguments connection channel arguments 205 220 :server-p (user connection))))) 206 221 (dolist (change mode-changes) … … 208 223 (op mode-name value) 209 224 change 210 (unless (has-mode-p targetmode-name)225 (unless (has-mode-p channel mode-name) 211 226 (add-mode target mode-name 212 (make-mode connection targetmode-name)))227 (make-mode connection channel mode-name))) 213 228 (funcall (if (char= #\+ op) #'set-mode #'unset-mode) 214 target mode-name value))))))229 channel mode-name value))))))) 215 230 216 231 (defmethod default-hook ((message irc-mode-message)) … … 218 233 (target &rest arguments) 219 234 (arguments message) 235 (print (arguments message)) 236 (print arguments) 220 237 (let* ((connection (connection message)) 221 238 (target (or (find-channel connection target) … … 236 253 237 254 (defmethod default-hook ((message irc-nick-message)) 238 (let* ((con (connection message)) 239 (user (find-or-make-user con (source message) 240 :hostname (host message) 241 :username (user message)))) 242 (change-nickname con user (trailing-argument message)))) 255 (with-slots 256 (connection source host user arguments) 257 message 258 (destructuring-bind 259 (new-nick) 260 arguments 261 (let* ((user (find-or-make-user connection source 262 :hostname host 263 :username user))) 264 (change-nickname connection user new-nick))))) 243 265 244 266 (defmethod default-hook ((message irc-kick-message)) 245 (let* ((connection (connection message)) 246 (channel (find-channel connection (first (arguments message)))) 247 (user (find-user connection (second (arguments message))))) 248 (if (self-message-p message) 249 (remove-channel user channel) 250 (remove-user channel user)))) 267 (with-slots 268 (connection arguments) 269 message 270 (destructuring-bind 271 (channel nick &optional reason) 272 arguments 273 (declare (ignore arguments)) 274 (let* ((channel (find-channel connection channel)) 275 (user (find-user connection nick))) 276 (if (self-message-p message) 277 (remove-channel user channel) 278 (remove-user channel user)))))) 251 279 252 280 (defmethod default-hook ((message ctcp-time-message)) 253 (multiple-value-bind (second minute hour date month year day) (get-decoded-time) 281 (multiple-value-bind 282 (second minute hour date month year day) 283 (get-decoded-time) 254 284 (send-irc-message 255 285 (connection message) -
TabularUnified trunk/utility.lisp ¶
r131 r134 293 293 (mode-name-from-char connection target 294 294 (char modes i)))) 295 (param-p (funcall param-req mode-rec))) 296 (when (and param-p 297 (= 0 (length arguments))) 295 (param-p (when mode-rec 296 (funcall param-req mode-rec)))) 297 (when (or (null mode-rec) 298 (and param-p 299 (= 0 (length arguments)))) 298 300 (throw 'illegal-mode-spec nil)) 299 301 (push (list this-op
Note: See TracChangeset
for help on using the changeset viewer.