|
|
@@ -20,7 +20,7 @@
|
|
|
do (setf *telegram-last-update*
|
|
|
(max (or *telegram-last-update* 0)
|
|
|
(aget "update_id" update)))
|
|
|
- do (lparallel:future (handle-message (aget "message" update)))))
|
|
|
+ do (handle-message (aget "message" update))))
|
|
|
|
|
|
|
|
|
(defun send-response (chat-id response &optional reply-id)
|
|
|
@@ -152,11 +152,10 @@
|
|
|
(defun send-akb (text)
|
|
|
(log:info "send-akb: ~A" text)
|
|
|
(dolist (chat-id *akb-send-to*)
|
|
|
- (lparallel:future
|
|
|
- (handler-case
|
|
|
- (telegram-send-message chat-id text
|
|
|
- :disable-web-preview 1)
|
|
|
- (error (e) (log:error e))))))
|
|
|
+ (handler-case
|
|
|
+ (telegram-send-message chat-id text
|
|
|
+ :disable-web-preview 1)
|
|
|
+ (error (e) (log:error e)))))
|
|
|
|
|
|
(defun handle-cmd-akb (chat-id message-id args)
|
|
|
(log:info "handle-cmd-akb" chat-id message-id args)
|
|
|
@@ -179,16 +178,11 @@
|
|
|
;; Finance
|
|
|
(defun process-rates ()
|
|
|
(handler-case
|
|
|
- (lparallel:plet ((ts (local-time:timestamp-to-unix (local-time:now)))
|
|
|
- (rates (get-rates))
|
|
|
- (brent (get-brent))
|
|
|
- (btc (get-btc-e)))
|
|
|
- (db-add-finance ts
|
|
|
- (aget "USD/RUB" rates)
|
|
|
- (aget "EUR/RUB" rates)
|
|
|
- (aget "GBP/RUB" rates)
|
|
|
- brent
|
|
|
- btc))
|
|
|
+ (let ((ts (local-time:timestamp-to-unix (local-time:now)))
|
|
|
+ (rates (get-rates))
|
|
|
+ (brent (get-brent))
|
|
|
+ (btc (get-btc-e)))
|
|
|
+ (db-add-finance ts (aget "USD/RUB" rates) (aget "EUR/RUB" rates) (aget "GBP/RUB" rates) brent btc))
|
|
|
(error (e) (log:error e))))
|
|
|
|
|
|
(defun handle-cmd-rates (chat-id message-id args)
|
|
|
@@ -337,9 +331,8 @@
|
|
|
(gethash chat-id checkins)))
|
|
|
(db-fsq-add-seen id created-at))))
|
|
|
(loop for chat-id being the hash-keys in checkins using (hash-value texts)
|
|
|
- do (lparallel:future
|
|
|
- (log:info "Sending checkins" chat-id texts)
|
|
|
- (telegram-send-message chat-id (format nil "~{~A~^~%~}" texts)))))
|
|
|
+ do (log:info "Sending checkins" chat-id texts)
|
|
|
+ (telegram-send-message chat-id (format nil "~{~A~^~%~}" texts))))
|
|
|
(error (e) (log:error e))))
|
|
|
|
|
|
|
|
|
@@ -428,24 +421,16 @@
|
|
|
(log:error e)
|
|
|
(telegram-send-message chat-id "Ошибочка вышла"))))
|
|
|
|
|
|
-(defun process-feed (feed)
|
|
|
+(defun process-feeds ()
|
|
|
(handler-case
|
|
|
- (progn
|
|
|
+ (dolist (feed (remove-if-not #'need-fetch-p (db-rss-get-active-feeds)))
|
|
|
(log:info "Fetching new items" (feed-url feed))
|
|
|
(dolist (item (%fetch-new-items feed))
|
|
|
- (lparallel:pmapc #'(lambda (chat-id)
|
|
|
- (telegram-send-message chat-id
|
|
|
- (format-feed-item item)
|
|
|
- :disable-web-preview 1))
|
|
|
- (db-rss-get-feed-chats feed)))
|
|
|
- ;; Update next fetch and period
|
|
|
- (db-rss-update-feed feed))
|
|
|
- (error (e) (log:error e))))
|
|
|
-
|
|
|
-(defun process-feeds ()
|
|
|
- (handler-case
|
|
|
- (lparallel:pmapc 'process-feed
|
|
|
- (remove-if-not #'need-fetch-p (db-rss-get-active-feeds)))
|
|
|
+ (dolist (chat-id (db-rss-get-feed-chats feed))
|
|
|
+ (telegram-send-message chat-id
|
|
|
+ (format-feed-item item)
|
|
|
+ :disable-web-preview 1)))
|
|
|
+ (db-rss-update-feed feed)) ;; Update next fetch and period
|
|
|
(error (e) (log:error e))))
|
|
|
|
|
|
|
|
|
@@ -472,15 +457,7 @@
|
|
|
process-rates
|
|
|
process-feeds) "Enabled schedules")
|
|
|
|
|
|
-(defvar *pool-size* 10 "lparallel pool size")
|
|
|
-
|
|
|
(defun start ()
|
|
|
- ;; Stop lparallel kernel if any
|
|
|
- (when lparallel:*kernel*
|
|
|
- (lparallel:end-kernel))
|
|
|
- ;; Start new kernel
|
|
|
- (setf lparallel:*kernel* (lparallel:make-kernel *pool-size*))
|
|
|
-
|
|
|
;; Clear prev threads
|
|
|
(mapc #'trivial-timers:unschedule-timer (trivial-timers:list-all-timers))
|
|
|
(let ((old-updates (find "process-updates"
|