anchor.diff:   '(setf drakma:*header-stream* *standard-output*))
   
   ; Telegram API methods, see https://core.telegram.org/bots/api
  +
  +(defmacro with-ok-results ((unserialized results) &body body)
  +  `(let ((,results (slot-value ,unserialized (find-json-symbol :result))))
  +     (if (slot-value ,unserialized (find-json-symbol :ok))
  +         (progn ,@body)
  +         nil)))
   
   (defun get-updates (b &key limit timeout)
     "https://core.telegram.org/bots/api#getupdates"
  
positive.code: 
  (in-package :cl-telegram-bot)
  
  (defclass bot ()
    ((id
      :documentation "Update id"
  
negative.code:           (cons :file_id file-id))))
          (make-request b "getFile" options)))
  
  (defun download-file (b file-id)
    "Perform HTTP request to 'name API method with 'options JSON-encoded object."
    (with-package :cl-telegram-bot
      (let* ((file-spec (decode (get-file b file-id))))
        (with-ok-results (file-spec results)
          (when-let* ((path      (access results 'file--path))
                      (uri       (concatenate 'string (file-endpoint b) path))
                      (extension (cl-ppcre:scan-to-strings "\\..*$" path)))
            (multiple-value-bind (body code headers)
                (drakma:http-request uri :method :get)
              (when (= code +http-ok+)
                (values body headers extension))))))))
  
  (defun kick-chat-member (b chat-id user-id)
    "https://core.telegram.org/bots/api#kickchatmember"
    (let ((options
  