Browse Source

[tinkoff] change process logic

Innokentiy Enikeev 7 năm trước cách đây
mục cha
commit
069ed0822a
1 tập tin đã thay đổi với 16 bổ sung16 xóa
  1. 16 16
      plugins/tinkoff.lisp

+ 16 - 16
plugins/tinkoff.lisp

@@ -209,24 +209,24 @@
 
 (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)))
-          (ledger-package (find-package :chatikbot.plugins.ledger)))
-      (when new
+    (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)))
+      (when changes
+	(log:info changes)
         (when old
-          (alexandria: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)))
+	  (log:info (length merged))
           (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-tink (:tink)
   (let ((arg (car args)))