Created
August 11, 2013 16:41
-
-
Save ekd123/6205605 to your computer and use it in GitHub Desktop.
My CL-XMPPGAME rc file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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