summaryrefslogtreecommitdiff
path: root/src/state.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/state.lisp')
-rw-r--r--src/state.lisp30
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)))