|
|
@@ -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)))
|