|
|
@@ -1,21 +1,17 @@
|
|
|
-
|
|
|
(in-package :cl-user)
|
|
|
(defpackage chatikbot.plugins.aoc
|
|
|
- (:use :cl :chatikbot.common :cl-cookie))
|
|
|
+ (:use :cl :chatikbot.common))
|
|
|
(in-package :chatikbot.plugins.aoc)
|
|
|
|
|
|
(defparameter +api-uri+ "https://adventofcode.com/2020/leaderboard/private/view/24158.json")
|
|
|
-(defparameter +api-host+ "adventofcode.com")
|
|
|
(defparameter +leader-board-link+ "https://adventofcode.com/2020/leaderboard/private/view/24158")
|
|
|
|
|
|
(defmethod poller-request ((module (eql :aoc)) method &rest params)
|
|
|
- (let ((cookie-jar (make-cookie-jar)))
|
|
|
- (merge-cookies cookie-jar
|
|
|
- (list (parse-set-cookie-header (format nil "session=~a;" *poller-token*) +api-host+ "/")))
|
|
|
+ (declare (ignorable params))
|
|
|
+ (let ((cookie (format nil "session=~a" *poller-token*)))
|
|
|
(handler-case
|
|
|
- (agets (json-request +api-uri+ :cookie-jar cookie-jar))
|
|
|
- (dex:http-request-failed (e) e)
|
|
|
- )))
|
|
|
+ (agets (json-request +api-uri+ :headers `((:cookie . ,cookie))))
|
|
|
+ (dex:http-request-failed (e) e))))
|
|
|
|
|
|
(defmethod poller-validate ((module (eql :aoc)) response)
|
|
|
(not (typep response 'dex:http-request-failed)))
|
|
|
@@ -23,15 +19,14 @@
|
|
|
(defmethod poller-get-token ((module (eql :aoc)) secret)
|
|
|
(let* ((*poller-token* secret))
|
|
|
(poller-request :aoc "")
|
|
|
- (format nil "~a" secret)
|
|
|
- ))
|
|
|
+ (format nil "~a" secret)))
|
|
|
|
|
|
(defun leaderboard ()
|
|
|
(poller-call :aoc ""))
|
|
|
|
|
|
(defun format-leaderboard (json)
|
|
|
(let ((sorted (sort (loop for (uid . member) in (agets json "members")
|
|
|
- collect (list (agets member "name") (agets member "local_score")))
|
|
|
+ collect (list (agets member "name") (agets member "local_score")))
|
|
|
#'> :key #'second)))
|
|
|
(format nil "🏆***Chad AoC Leaderboard***🏆~%~a~%~%~{~a. ~a: ~a~^~%~}" +leader-board-link+
|
|
|
(apply 'append (mapcar #'cons (alexandria:iota (length sorted) :start 1) sorted)))))
|
|
|
@@ -39,17 +34,17 @@
|
|
|
(defun handle-leaderboard ()
|
|
|
(bot-send-message
|
|
|
(handler-case
|
|
|
- (format-leaderboard (leaderboard))
|
|
|
+ (format-leaderboard (leaderboard))
|
|
|
(poller-error ()
|
|
|
"Надо обновить куки, старые истекли"))
|
|
|
:parse-mode "markdown"))
|
|
|
|
|
|
(defun handle-set-cookie (cookie)
|
|
|
(handler-case (progn
|
|
|
- (poller-authenticate :aoc cookie)
|
|
|
- (bot-send-message "Кука рабочая, теперь можешь делать запросы."))
|
|
|
- (poller-cant-authenticate ()
|
|
|
- (bot-send-message "Чот не смог, пропробуй другие."))))
|
|
|
+ (poller-authenticate :aoc cookie)
|
|
|
+ (bot-send-message "Кука рабочая, теперь можешь делать запросы."))
|
|
|
+ (poller-cant-authenticate ()
|
|
|
+ (bot-send-message "Чот не смог, пропробуй другие."))))
|
|
|
|
|
|
(def-message-cmd-handler handle-cmd-aoc (:aoc)
|
|
|
(cond
|