Advertisement
Shinmera

Colleen Blants Module

Dec 4th, 2013
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.25 KB | None | 0 0
  1. #|
  2.   This file is a part of Colleen
  3.   (c) 2013 TymoonNET/NexT http://tymoon.eu (shinmera@tymoon.eu)
  4.   Author: Nicolas Hafner <shinmera@tymoon.eu>
  5. |#
  6.  
  7. (in-package :org.tymoonnext.colleen)
  8. (defpackage org.tymoonnext.colleen.mod.blants
  9.   (:use :cl :colleen)
  10.   (:shadowing-import-from :colleen :restart))
  11. (in-package :org.tymoonnext.colleen.mod.blants)
  12.  
  13. (define-module blants () ())
  14.  
  15. (defparameter *thanks-match* (cl-ppcre:create-scanner "[Tt]hanks[,]? ([a-zA-Z]+)"))
  16. (defparameter *bless-match* (cl-ppcre:create-scanner "[Bb]less you[,]? ([a-zA-Z]+)"))
  17.  
  18. (defun cut-to-first-vocal (string)
  19.   (loop for i from 0 below (length string)
  20.      until (find (aref string i) '(#\a #\e #\i #\o #\u))
  21.      finally (return (subseq string i))))
  22.  
  23. (define-handler (privmsg-event event) ()
  24.   (cl-ppcre:register-groups-bind (name) (*thanks-match* (message event))
  25.     (sleep 2)
  26.     (respond event "...Th~a" (cut-to-first-vocal name)))
  27.   (cl-ppcre:register-groups-bind (name) (*bless-match* (message event))
  28.     (sleep 2)
  29.     (respond event "...Bl~a" (cut-to-first-vocal name))))
  30.  
  31. (define-command thanks () (:documentation "Thanks you." :eventvar event)
  32.   (respond event "Thanks, ~a" (nick event))
  33.   (sleep 2)
  34.   (respond event "...Th~a" (cut-to-first-vocal (nick event))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement