|
|
@@ -195,7 +195,7 @@
|
|
|
:key #'cdr))
|
|
|
|
|
|
(defun %saver/format-payment-notification (payment moment)
|
|
|
- (format nil "'~A' is due ~A with ~$"
|
|
|
+ (format nil "'~A' надо оплатить *~A* на сумму _~$_"
|
|
|
(saver/payment-name payment)
|
|
|
(%saver/format-time moment)
|
|
|
(/ (saver/payment-amount payment) 100)))
|
|
|
@@ -209,7 +209,7 @@
|
|
|
|
|
|
(defun %saver/format-salary-notification (salary payments moment)
|
|
|
(let ((period-info (saver/get-period-info salary payments moment)))
|
|
|
- (format nil "~A is payday. Save ~$!"
|
|
|
+ (format nil "*~A* зарплата. Отложи _~$_!"
|
|
|
(%saver/format-time (getf period-info :next-salary))
|
|
|
(/ (getf period-info :total-period) 100))))
|
|
|
|
|
|
@@ -243,7 +243,7 @@
|
|
|
(< (getf info :next-payment) closest-time))
|
|
|
do (setf closest-time (getf info :next-payment)
|
|
|
closest-payment payment)
|
|
|
- collect (format nil "~D) ~A on [~A]: saved ~$ of ~$, left ~$ in ~A periods"
|
|
|
+ collect (format nil "~D) ~A по [~A]: накоплено _~$_ из _~$_, осталось _~$_ за ~A платежа"
|
|
|
idx
|
|
|
(saver/payment-name payment)
|
|
|
(saver/payment-schedule payment)
|
|
|
@@ -253,7 +253,7 @@
|
|
|
(getf info :left-periods))))
|
|
|
(period-info (saver/get-period-info salary payments moment)))
|
|
|
(if payments-info
|
|
|
- (format nil "~{~A~^~%~}~%~%Savings now should be ~$~%Next save is on ~A with ~$~%Next payment is '~A' on ~A with ~$"
|
|
|
+ (format nil "*Платежи*~%~{~A~^~%~}~%~%Накоплено должно быть _~$_~%Следующее накопление *~A* на _~$_~%Следующий платёж '~A' *~A*, _~$_"
|
|
|
payments-info
|
|
|
(/ (getf period-info :total-saved) 100)
|
|
|
(%saver/format-time (getf period-info :next-salary))
|
|
|
@@ -261,22 +261,22 @@
|
|
|
(saver/payment-name closest-payment)
|
|
|
(%saver/format-time closest-time)
|
|
|
(/ (saver/payment-amount closest-payment) 100))
|
|
|
- "No active payments.")))
|
|
|
+ "Нет активных платежей.")))
|
|
|
|
|
|
(defun saver/send-info (chat-id)
|
|
|
(let ((payments (db/saver/get-payments chat-id))
|
|
|
(salary (db/saver/get-salary chat-id)))
|
|
|
(if salary
|
|
|
(if payments
|
|
|
- (send-response chat-id (%saver/format-info payments salary))
|
|
|
- (send-response chat-id (format nil "No payments yet, salary: ~A" salary)))
|
|
|
- (send-response chat-id "No salary set, /saver salary <cron>"))))
|
|
|
+ (bot-send-message chat-id (%saver/format-info payments salary) :parse-mode "markdown")
|
|
|
+ (bot-send-message chat-id (format nil "Платежей нет, зарплата: ~A" salary)))
|
|
|
+ (send-response chat-id "Зарплата не задана, /saver salary <cron>"))))
|
|
|
|
|
|
(defun saver/set-salary (chat-id args)
|
|
|
(let ((sched (spaced args)))
|
|
|
(saver/parse-schedule sched)
|
|
|
(db/saver/set-salary chat-id sched)
|
|
|
- (send-response chat-id (format nil "Salary is now '~A'" sched))))
|
|
|
+ (send-response chat-id (format nil "Зарплата теперь '~A'" sched))))
|
|
|
|
|
|
(defparameter +saver/add-scanner+ (cl-ppcre:create-scanner "^(.+?) (\\d+(?:\\.\\d*)?) ((?:\\d+(?:,\\d+)*(?:-\\d+)?|\\*)(?:\\/\\d+)?(?: (?:\\d+(?:,\\d+)*(?:-\\d+)?|\\*)(?:\\/\\d+)?){0,2})(?: (\\d{4}-\\d{2}-\\d{2}))?$"))
|
|
|
|
|
|
@@ -297,10 +297,10 @@
|
|
|
(get-universal-time))
|
|
|
(handler-case
|
|
|
(db/saver/add-payment chat-id payment)
|
|
|
- (error (e) (send-response chat-id (format nil "Payment '~A' exists!"
|
|
|
+ (error (e) (send-response chat-id (format nil "Платёж '~A' уже есть!"
|
|
|
(saver/payment-name payment)))))
|
|
|
(saver/send-info chat-id))
|
|
|
- (send-response chat-id "Bad format. /saver add <title> <amount> <cron> [started]"))))
|
|
|
+ (send-response chat-id "Неправильно. /saver add <title> <amount> <cron> [started]"))))
|
|
|
|
|
|
(defun saver/del-payment (chat-id args)
|
|
|
(handler-case
|
|
|
@@ -308,7 +308,7 @@
|
|
|
(salary (db/saver/get-salary chat-id)))
|
|
|
(db/saver/del-payment chat-id (saver/payment-name payment))
|
|
|
(send-response chat-id
|
|
|
- (format nil "'~A' removed.~@[ Get ~$ from savings.~]"
|
|
|
+ (format nil "'~A' удалил.~@[ Забрать _~$_ из накопленого.~]"
|
|
|
(saver/payment-name payment)
|
|
|
(and salary
|
|
|
(/ (getf (saver/get-payment-info payment salary) :saved-amount)
|
|
|
@@ -323,4 +323,4 @@
|
|
|
(:salary (saver/set-salary chat-id (rest args)))
|
|
|
(:add (saver/add-payment chat-id (rest args)))
|
|
|
(:del (saver/del-payment chat-id (rest args)))
|
|
|
- (t (send-response chat-id "Unknown command")))))
|
|
|
+ (t (send-response chat-id "Чот не понял")))))
|