فهرست منبع

[plugins] new process logic

Innocenty Enikeew 7 سال پیش
والد
کامیت
0c6570522f
3فایلهای تغییر یافته به همراه42 افزوده شده و 45 حذف شده
  1. 15 16
      plugins/gazprom.lisp
  2. 15 16
      plugins/raiffeisen.lisp
  3. 12 13
      plugins/tinkoff.lisp

+ 15 - 16
plugins/gazprom.lisp

@@ -174,24 +174,23 @@
 
 (defcron process-gazprom (:minute '(member 0 5 10 15 20 25 30 35 40 45 50 55))
   (dolist (chat-id (lists-get :gazprom))
-    (let ((old (gethash chat-id *last-entries*))
-          (new (get-chat-last-n-orders chat-id 20))
-          (ledger-package (find-package :chatikbot.plugins.ledger)))
-      (when new
+    (let* ((old (gethash chat-id *last-entries*))
+           (new (get-chat-last-n-orders chat-id 20))
+           (changes (sort (set-difference new old :test #'equalp)
+                          #'< :key (agetter "date")))
+           (ledger-package (find-package :chatikbot.plugins.ledger)))
+      (when changes
+        (log:info changes)
         (when old
-          (when-let (changes (prepare-entries (set-difference new old :test #'equalp)))
-            (log:info changes)
-            (if ledger-package
-                (let ((new-chat-entry (symbol-function
-                                       (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
-                  (dolist (entry changes)
-                    (funcall new-chat-entry chat-id (pta-ledger:clone-entry entry))))
-                (bot-send-message chat-id (format-entries changes) :parse-mode "markdown"))))
-        (let ((merged (remove-duplicates
-                       (merge 'list old new #'< :key (agetter "date"))
-                       :test 'equalp)))
+          (if ledger-package
+              (let ((new-chat-entry (symbol-function
+                                     (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
+                (dolist (entry (prepare-entries changes))
+                  (funcall new-chat-entry chat-id (pta-ledger:clone-entry entry))))
+              (bot-send-message chat-id (format-entries (prepare-entries changes)) :parse-mode "markdown")))
+        (let ((merged (merge 'list old changes #'< :key (agetter "date"))))
           (setf (gethash chat-id *last-entries*)
-                (subseq merged 0 (min (length merged) 200))))))))
+                (subseq merged (max (- (length merged) 200) 0))))))))
 
 (def-message-cmd-handler handler-gazprom (:gpn :gazprom)
   (let ((arg (car args)))

+ 15 - 16
plugins/raiffeisen.lisp

@@ -191,24 +191,23 @@
 
 (defcron process-raiffeisen (:minute '(member 0 5 10 15 20 25 30 35 40 45 50 55))
   (dolist (chat-id (lists-get :raiffeisen))
-    (let ((old (gethash chat-id *last-entries*))
-          (new (get-chat-last-n-entries chat-id 20))
-          (ledger-package (find-package :chatikbot.plugins.ledger)))
-      (when new
+    (let* ((old (gethash chat-id *last-entries*))
+           (new (get-chat-last-n-entries chat-id 20))
+           (changes (sort (set-difference new old :test #'equalp)
+                          #'< :key #'pta-ledger:entry-date))
+           (ledger-package (find-package :chatikbot.plugins.ledger)))
+      (when changes
+        (log:info changes)
         (when old
-          (when-let (changes (set-difference new old :test #'equalp))
-            (log:info changes)
-            (if ledger-package
-                (let ((new-chat-entry (symbol-function
-                                       (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
-                  (dolist (entry changes)
-                    (funcall new-chat-entry chat-id (pta-ledger:clone-entry entry))))
-                (bot-send-message chat-id (format-entries changes) :parse-mode "markdown"))))
-        (let ((merged (remove-duplicates
-                       (merge 'list old new #'< :key #'pta-ledger:entry-date)
-                       :test 'equalp)))
+          (if ledger-package
+              (let ((new-chat-entry (symbol-function
+                                     (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
+                (dolist (entry changes)
+                  (funcall new-chat-entry chat-id (pta-ledger:clone-entry entry))))
+              (bot-send-message chat-id (format-entries changes) :parse-mode "markdown")))
+        (let ((merged (merge 'list old changes #'< :key #'pta-ledger:entry-date)))
           (setf (gethash chat-id *last-entries*)
-                (subseq merged 0 (min (length merged) 200))))))))
+                (subseq merged (max (- (length merged) 200) 0))))))))
 
 (def-message-cmd-handler handler-raif (:raif)
   (let ((arg (car args)))

+ 12 - 13
plugins/tinkoff.lisp

@@ -210,21 +210,20 @@
 (defcron process-tinkoff (:minute '(member 0 5 10 15 20 25 30 35 40 45 50 55))
   (dolist (chat-id (lists-get :tinkoff))
     (let* ((old (gethash chat-id *last-entries*))
-	   (new (get-chat-last-entries chat-id (* 7 24 60 60)))
-	   (changes (sort (set-difference new old :test #'equalp)
-			  #'< :key #'pta-ledger:entry-date))
-	   (ledger-package (find-package :chatikbot.plugins.ledger)))
+           (new (get-chat-last-entries chat-id (* 7 24 60 60)))
+           (changes (sort (set-difference new old :test #'equalp)
+                          #'< :key #'pta-ledger:entry-date))
+           (ledger-package (find-package :chatikbot.plugins.ledger)))
       (when changes
-	(log:info changes)
+        (log:info changes)
         (when old
-	  (if ledger-package
-	      (let ((new-chat-entry (symbol-function
-				     (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
-		(dolist (entry changes)
-		  (funcall new-chat-entry chat-id (pta-ledger:clone-entry entry))))
-	      (bot-send-message chat-id (format-entries changes) :parse-mode "markdown")))
-	(let ((merged (merge 'list old changes #'< :key #'pta-ledger:entry-date)))
-	  (log:info (length merged))
+          (if ledger-package
+              (let ((new-chat-entry (symbol-function
+                                     (intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
+                (dolist (entry changes)
+                  (funcall new-chat-entry chat-id (pta-ledger:clone-entry entry))))
+              (bot-send-message chat-id (format-entries changes) :parse-mode "markdown")))
+        (let ((merged (merge 'list old changes #'< :key #'pta-ledger:entry-date)))
           (setf (gethash chat-id *last-entries*)
                 (subseq merged (max (- (length merged) 200) 0))))))))