diff options
Diffstat (limited to 'src/state.lisp')
| -rw-r--r-- | src/state.lisp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/state.lisp b/src/state.lisp new file mode 100644 index 0000000..98e2048 --- /dev/null +++ b/src/state.lisp | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | ;; SPDX-License-Identifier: EUPL-1.2 | ||
| 2 | ;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com> | ||
| 3 | (defpackage :ukkoclot/state | ||
| 4 | (:use :c2cl :ukkoclot/config) | ||
| 5 | (:export | ||
| 6 | #:bot | ||
| 7 | #:make-bot | ||
| 8 | #:bot-p | ||
| 9 | #:copy-bot | ||
| 10 | #:bot-config | ||
| 11 | #:bot-db | ||
| 12 | #:bot-base-uri | ||
| 13 | #:bot-power-on | ||
| 14 | #:bot-username% | ||
| 15 | #:bot-id%)) | ||
| 16 | (in-package :ukkoclot/state) | ||
| 17 | |||
| 18 | (defstruct (bot (:constructor make-bot%)) | ||
| 19 | (config (error "No value given for config") :read-only t) | ||
| 20 | (db (error "No value given for DB") :read-only t) | ||
| 21 | (base-uri (error "No value given for base-uri") :read-only t) | ||
| 22 | (power-on t :type boolean) | ||
| 23 | (username% nil :type (or string null)) | ||
| 24 | (id% nil :type (or integer null))) | ||
| 25 | |||
| 26 | (defun make-bot (config db) | ||
| 27 | (let ((base-uri (concatenate 'string | ||
| 28 | "https://api.telegram.org/bot" | ||
| 29 | (config-bot-token config) "/"))) | ||
| 30 | (make-bot% :config config :db db :base-uri base-uri))) | ||