Skip to content

Instantly share code, notes, and snippets.

@ekd123
Created August 11, 2013 16:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ekd123/6205605 to your computer and use it in GitHub Desktop.
Save ekd123/6205605 to your computer and use it in GitHub Desktop.
My CL-XMPPGAME rc file
(setf cl-xmppgame:*domain* "xmppdomain.org")
(setf cl-xmppgame:*username* "bot")
(setf cl-xmppgame:*password* "your password here")
(require :drakma)
(require :cl-json)
(require :bordeaux-threads)
(cl-xmppgame:add-command-handler
"喵"
#'(lambda (conn from username arglist)
(xmpp:message conn from (format nil "~a,我鄭重警告你,你說「喵」的話是會被老貓喫掉的!" (if (first arglist) (first arglist) username)))))
(cl-xmppgame:add-command-handler
"測試"
#'(lambda (conn from username arglist)
"把每個參數按每個消息發出去"
(declare (ignore username))
(dolist (item arglist)
(xmpp:message conn from (format nil "~a" item)))))
(cl-xmppgame:add-command-handler
"我"
#'(lambda (conn from username arglist)
"發一個以 {用戶名} *arglist 爲格式的消息"
(xmpp:message conn from (format nil "~a ~{~a ~}" username arglist))))
(cl-xmppgame:add-command-handler
"大家好"
#'(lambda (conn from username arglist)
"向大家問好!"
(declare (ignore arglist))
(xmpp:message conn from (format nil "~a 在向大家問好!" username))))
(cl-xmppgame:add-command-handler
"大家好啊大家好"
#'(lambda (conn from username arglist)
(declare (ignore arglist))
(xmpp:message conn from (format nil "~a 很不耐煩地在向大家問好……" username))))
(cl-xmppgame:add-command-handler
"刷屏"
#'(lambda (conn from username arglist)
"發一堆同樣的消息,第一個參數是文字,第二個是次數"
(let ((count (handler-case (parse-integer (second arglist))
(error () 0))))
(if (> count 10)
(xmpp:message conn from "你想水死大家嗎?")
(dotimes (i count)
(xmpp:message conn from (format nil "~a 第~a次說 ~a"
username (1+ i) (first arglist))))))))
(cl-xmppgame:add-command-handler
"去死"
(lambda (conn from username arglist)
(declare (ignore arglist))
(if (string= username "紅繁君")
(progn (xmpp:message conn from "君要臣死 臣不得不死……")
(error 'cl-xmppgame:signaled-exit))
(xmpp:message conn from "你不是主人,我不聽你的!"))))
(cl-xmppgame:add-command-handler
"死ね"
(lambda (conn from username arglist)
(declare (ignore arglist))
(if (string= username "紅繁君")
(progn (xmpp:message conn from "はい!マスター様。")
(error 'cl-xmppgame:signaled-exit))
(xmpp:message conn from "アンタはバカヤロウ!"))))
(defvar *random-to-say* #("這句話說完了!" "句號" "真是不錯吶" "呵呵" "還是洗洗睡吧" "不作死就不會死!" "有本事說句「喵」啊~" "其實我是貓形機器人" "。"))
(defun vector-last (obj)
(elt obj (1- (length obj))))
(defun random-select (vector)
(elt vector (random (length vector))))
(cl-xmppgame:add-hook
#'(lambda (conn from username msg)
(declare (ignore username))
(if (or (char-equal (vector-last msg) #\()
(char-equal (vector-last msg) #\())
(xmpp:message conn from (format nil "~a)" (random-select *random-to-say*))))
nil))
(cl-xmppgame:add-hook
#'(lambda (conn from username msg)
(declare (ignore username))
(if (string-equal "ping 括號機器人" msg)
(xmpp:message conn from "括號機器人在此"))))
;; this is a damn evil function...
;; the very magical magic you can do magically
;; 使用它是你這輩子最後悔的事。
;; 玄天廣大,法力無窮。
(cl-xmppgame:add-hook
#'(lambda (conn from username msg)
(declare (ignorable conn from username)
(special conn from username msg))
(when (equal (search "eval " msg) 0)
(handler-case (eval (read-from-string (subseq msg 5)))
(error () t))
t)
nil))
(cl-xmppgame:add-command-handler
"py"
#'(lambda (conn from username arglist)
(handler-case
(cl-json:json-bind (_a _b _c _d _e rs) (drakma:http-request (format nil "http://ime.qq.com/fcgi-bin/getword?q=~a" (first arglist)))
(declare (ignore _a _b _c _d _e))
(xmpp:message conn from (format nil "~a: ~a" username (if (first rs) (first rs) "抱歉,可能因爲你的輸入有誤,沒有獲得結果。"))))
(error () (xmpp:message conn from (format nil "~a: 抱歉,因網路問題無法提供結果。" username))))))
;; (cl-xmppgame:add-hook
;; #'(lambda (conn from username msg)
;; (format t "HOOK:[~a] ~a~%" username msg)
;; nil))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment