Переглянути джерело

Many tumblrs at once and minor changes

Innokenty Enikev 10 роки тому
батько
коміт
62476264a5
3 змінених файлів з 35 додано та 13 видалено
  1. 5 3
      chatikbot.lisp
  2. 10 4
      eliza.lisp
  3. 20 6
      tumblr.lisp

+ 5 - 3
chatikbot.lisp

@@ -23,9 +23,11 @@
 
 (defun send-response (chat-id response &optional reply-id)
   (if (consp response)
-      (case (car response)
-        (:text (telegram-send-message chat-id (cdr response) :reply-to reply-id))
-        (:sticker (telegram-send-sticker chat-id (cdr response) :reply-to reply-id)))
+      (if (keywordp (car response))
+	  (case (car response)
+	    (:text (telegram-send-message chat-id (cdr response) :reply-to reply-id))
+	    (:sticker (telegram-send-sticker chat-id (cdr response) :reply-to reply-id)))
+	  (mapc #'(lambda (r) (send-response chat-id r reply-id)) response))
       (telegram-send-message chat-id response :reply-to reply-id)))
 
 (defun send-dont-understand (chat-id &optional text reply-id)

+ 10 - 4
eliza.lisp

@@ -16,16 +16,22 @@
      (сам иди ?x) (покомандуй тут еще) ,@*fuck-off*)
     (((?* ?a) (?or хуита хуета хуйня лажа говно бред) (?* ?b))
      ("вам, сударь," не угодить) (и что?) (бывает) (мопед не мой) (сам получше придумывай) ,@*fuck-off*)
-    (((?* ?a) (?or норм хорошо молодец) (?* ?b))
+    (((?* ?a) (?or норм хорошо молодец ниплохо ниплоха ниеплоха) (?* ?b))
      (спасибо) (я старался) (как себе) ,@*fuck-off*)
     (((?or спасибо) (?* ?x))
      (всё для вас) (пожалуйста) (на здоровье) ,@*fuck-off*)
     (((?* ?x) (?or уровень) (?* ?y))
      (в жопу себе его засунь) (хуюровень) ,@*fuck-off*)
-    (((?* ?a) (?is ?x ,(lambda (i) (search "ХАХА" (symbol-name i)))) (?* ?b))
+    (((?* ?a) (?is ?x ,(lambda (i) (and (symbolp i) (search "ХАХА" (symbol-name i))))) (?* ?b))
      (очень смешно) (клоунов тут нашел?) (посмейся мне еще) ,@*fuck-off*)
-    (((?* ?a) (?or сиськи сисяндры титьки буфера tits) (?* ?b))
-     (#'tumblr-random-photo))
+    (((?* ?a) (?or сиськи сисяндры титьки буфера boobs tits) (?is ?n numberp))
+     (#'tumblr-random-photo ,*boobs-roll* ?n))
+    (((?* ?a) (?or сиськи сисяндры титьки буфера boobs tits) (?* ?b))
+     (#'tumblr-random-photo ,*boobs-roll*))
+    (((?* ?a) (?or жопа жопы ягодицы зад зады ass asses) (?is ?n numberp))
+     (#'tumblr-random-photo ,*ass-roll* ?n))
+    (((?* ?a) (?or жопа жопы ягодицы зад зады ass asses) (?* ?b))
+     (#'tumblr-random-photo ,*ass-roll*))
     (((?* ?a) (?or ты бот ботяра) (?* ?x))
      (сам ?x) (сам ты ?x) (а по ебалу?) (сейчас мы разберемся кто еще тут ?x) ,@*fuck-off*)
     (((?* x))

+ 20 - 6
tumblr.lisp

@@ -3,6 +3,20 @@
 (defvar *tumblr-roll* nil "List of tumblr to select from")
 (defparameter *read-timeout* 5 "API request timeout")
 
+(defparameter *boobs-roll*
+  '("http://bbt12.tumblr.com"
+    "http://boobsarethegreatest.tumblr.com"
+    "http://neverending-boobs.tumblr.com"
+    "http://titsandeyes.tumblr.com"
+    "http://perfectbreasts.tumblr.com")
+  "Tumblr roll with boobs")
+
+(defparameter *ass-roll*
+  '("http://divine-asses.tumblr.com"
+    "http://greatestassonearth.tumblr.com")
+  "Tumblr roll with asses")
+
+
 (defun lo-string (val)
   (string-downcase (princ-to-string val)))
 
@@ -21,15 +35,15 @@
          :object-as :alist))
     (bordeaux-threads:timeout (e) (error e))))
 
-(defun tumblr-random-post (&key (roll *tumblr-roll*) type)
+(defun tumblr-random-post (&key (roll *tumblr-roll*) type (num 1))
   (when roll
     (let* ((domain (random-elt roll))
            (total (aget "posts-total" (tumblr-read domain :num 1 :type type)))
 	   (start (random total))
-           (res (tumblr-read domain :num 1 :type type :start start)))
+           (res (tumblr-read domain :num num :type type :start start)))
       (log:info "Post" start "from" domain)
-      (aget "photo-url-1280"
-            (first (aget "posts" res))))))
+      (loop for post in (aget "posts" res)
+	   collect (aget "photo-url-1280" post)))))
 
-(defun tumblr-random-photo (&optional (roll *tumblr-roll*))
-  (tumblr-random-post :roll roll :type :photo))
+(defun tumblr-random-photo (&optional (roll *tumblr-roll*) (num 1))
+  (tumblr-random-post :roll roll :type :photo :num num))