From 4da3ad1f569832845b58c3ce35149633a2bb665c Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Thu, 9 Oct 2025 21:58:43 +0300 Subject: Initial commit --- src/tg-types/user.lisp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/tg-types/user.lisp (limited to 'src/tg-types/user.lisp') diff --git a/src/tg-types/user.lisp b/src/tg-types/user.lisp new file mode 100644 index 0000000..c5ed499 --- /dev/null +++ b/src/tg-types/user.lisp @@ -0,0 +1,48 @@ +;; SPDX-License-Identifier: EUPL-1.2 +;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs +(defpackage :ukkoclot/tg-types/user + (:use :c2cl :ukkoclot/tg-types/macros) + (:import-from :ukkoclot/strings :escape-xml) + (:export + user user-p + + hash->user make-user parse-user-array user-format-name + + user-id user-is-bot user-first-name user-last-name user-username user-language-code user-is-premium + user-added-to-attachment-menu user-can-join-groups user-can-read-all-group-messages user-supports-inline-queries + user-can-connect-to-business)) +(in-package :ukkoclot/tg-types/user) + +(define-tg-type user + (id integer) + (is-bot boolean) + (first-name string) + (last-name (or string null) nil) + (username (or string null) nil) + (language-code (or string null) nil) + (is-premium boolean nil) + (added-to-attachment-menu boolean nil) + (can-join-groups boolean nil) + (can-read-all-group-messages boolean nil) + (supports-inline-queries boolean nil) + (can-connect-to-business boolean nil)) + +(defun user-format-name% (user out) + (format out "" (user-id user)) + (escape-xml (user-first-name user) out) + (when (user-last-name user) + (write-char #\Space out) + (escape-xml (user-last-name user) out)) + (write-string "" out) + + (when (user-username user) + (write-string " @" out) + (escape-xml (user-username user) out)) + + (format out " [~A]" (user-id user))) + +(defun user-format-name (user &optional out) + (if out + (user-format-name% user out) + (with-output-to-string (stream) + (user-format-name% user stream)))) -- cgit v1.2.3