|
@@ -174,24 +174,23 @@
|
|
|
|
|
|
|
|
(defcron process-gazprom (:minute '(member 0 5 10 15 20 25 30 35 40 45 50 55))
|
|
(defcron process-gazprom (:minute '(member 0 5 10 15 20 25 30 35 40 45 50 55))
|
|
|
(dolist (chat-id (lists-get :gazprom))
|
|
(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 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*)
|
|
(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)
|
|
(def-message-cmd-handler handler-gazprom (:gpn :gazprom)
|
|
|
(let ((arg (car args)))
|
|
(let ((arg (car args)))
|