Plaster

common-lisp
(defmacro command-defining-macro-no-moonbot (name command-type) `(defmacro ,name (name args doc-string &body body) (alexandria:with-gensyms (command fun) `(let* ((,fun (lambda (community room message ,@(args-from-validation-lists ',args)) (declare (ignorable message)) (progn ,@(list-of-lists->validators ',args)) (locally ,@body))) (,command (make-command ,',command-type ',name ,doc-string ',args ,fun)) (add-command ,command))))))