|
@@ -3,9 +3,10 @@
|
|
|
(:use :cl :chatikbot.common))
|
|
(:use :cl :chatikbot.common))
|
|
|
(in-package :chatikbot.plugins.aoc)
|
|
(in-package :chatikbot.plugins.aoc)
|
|
|
|
|
|
|
|
-(defparameter +api-uri+ "https://adventofcode.com/2020/leaderboard/private/view/24158.json")
|
|
|
|
|
-(defparameter +leader-board-link+ "https://adventofcode.com/2020/leaderboard/private/view/24158")
|
|
|
|
|
|
|
+(defparameter +api-uri+ "https://adventofcode.com/2020/leaderboard/private/view/657296.json")
|
|
|
|
|
+(defparameter +leader-board-link+ "https://adventofcode.com/2020/leaderboard/private/view/657296")
|
|
|
(defparameter +advent-time+ (encode-universal-time 0 0 8 25 12 2020 -3))
|
|
(defparameter +advent-time+ (encode-universal-time 0 0 8 25 12 2020 -3))
|
|
|
|
|
+(defparameter +max-people+ 15)
|
|
|
|
|
|
|
|
(defmethod poller-request ((module (eql :aoc)) method &rest params)
|
|
(defmethod poller-request ((module (eql :aoc)) method &rest params)
|
|
|
(declare (ignorable params))
|
|
(declare (ignorable params))
|
|
@@ -38,12 +39,12 @@
|
|
|
collect (case stars (1 "☆") (2 "★") (t " • ")))))
|
|
collect (case stars (1 "☆") (2 "★") (t " • ")))))
|
|
|
|
|
|
|
|
(defun format-leaderboard (json)
|
|
(defun format-leaderboard (json)
|
|
|
- (let ((sorted (sort (loop for (uid . member) in (agets json "members")
|
|
|
|
|
|
|
+ (let ((sorted (sort (loop for (uid . member) in (subseq (agets json "members") 0 +max-people+)
|
|
|
collect (list (agets member "name")
|
|
collect (list (agets member "name")
|
|
|
(agets member "local_score")
|
|
(agets member "local_score")
|
|
|
(format-stars (agets member "completion_day_level"))))
|
|
(format-stars (agets member "completion_day_level"))))
|
|
|
#'> :key #'second)))
|
|
#'> :key #'second)))
|
|
|
- (format nil "🏆***Chad AoC Leaderboard***🏆~%~a~%~%~{~a. ~a: ~a ~% ~a~^~%~}" +leader-board-link+
|
|
|
|
|
|
|
+ (format nil "🏆***Fridach AoC Leaderboard***🏆~%~a~%~%~{~a. ~a: ~a ~% ~a~^~%~}" +leader-board-link+
|
|
|
(apply 'append (mapcar #'cons (alexandria:iota (length sorted) :start 1) sorted)))))
|
|
(apply 'append (mapcar #'cons (alexandria:iota (length sorted) :start 1) sorted)))))
|
|
|
|
|
|
|
|
(defun handle-leaderboard ()
|
|
(defun handle-leaderboard ()
|
|
@@ -56,7 +57,7 @@
|
|
|
|
|
|
|
|
(defun format-completion-state-change (diff)
|
|
(defun format-completion-state-change (diff)
|
|
|
(format nil "Обновился лидерборд 🏆***AoC*** 🏆~%~a~%~{~a!~^~%~}" +leader-board-link+ (loop for (uid name daynum completed) in diff
|
|
(format nil "Обновился лидерборд 🏆***AoC*** 🏆~%~a~%~{~a!~^~%~}" +leader-board-link+ (loop for (uid name daynum completed) in diff
|
|
|
- collect (format nil "***~a*** ебнул ~a задачку ~a дня" name completed daynum))))
|
|
|
|
|
|
|
+ collect (format nil "***~a*** сделал(а) ~a задачку ~a дня" name completed daynum))))
|
|
|
|
|
|
|
|
(defcron process-aoc (:minute '(member 0 15 30 45))
|
|
(defcron process-aoc (:minute '(member 0 15 30 45))
|
|
|
(poller-poll-lists :aoc
|
|
(poller-poll-lists :aoc
|