summaryrefslogtreecommitdiff
path: root/src/bot
diff options
context:
space:
mode:
Diffstat (limited to 'src/bot')
-rw-r--r--src/bot/advanced.lisp2
-rw-r--r--src/bot/methods.lisp97
2 files changed, 1 insertions, 98 deletions
diff --git a/src/bot/advanced.lisp b/src/bot/advanced.lisp
index c18b574..3763151 100644
--- a/src/bot/advanced.lisp
+++ b/src/bot/advanced.lisp
@@ -1,7 +1,7 @@
1;; SPDX-License-Identifier: EUPL-1.2 1;; SPDX-License-Identifier: EUPL-1.2
2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com> 2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com>
3(defpackage :ukkoclot/bot/advanced 3(defpackage :ukkoclot/bot/advanced
4 (:use :c2cl :ukkoclot/bot/methods :ukkoclot/tg) 4 (:use :c2cl :ukkoclot/tg)
5 (:import-from :ukkoclot/state :bot-id% :bot-username%) 5 (:import-from :ukkoclot/state :bot-id% :bot-username%)
6 (:export :bot-id :bot-username :reply-animation :reply-message :try-delete-message)) 6 (:export :bot-id :bot-username :reply-animation :reply-message :try-delete-message))
7(in-package :ukkoclot/bot/advanced) 7(in-package :ukkoclot/bot/advanced)
diff --git a/src/bot/methods.lisp b/src/bot/methods.lisp
deleted file mode 100644
index 6f01cae..0000000
--- a/src/bot/methods.lisp
+++ /dev/null
@@ -1,97 +0,0 @@
1;; SPDX-License-Identifier: EUPL-1.2
2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com>
3(defpackage :ukkoclot/bot/methods
4 (:use :c2cl :ukkoclot/bot/method-macros :ukkoclot/tg)
5 (:import-from :ukkoclot/state :bot-id% :bot-username%)
6 (:export :answer-callback-query :delete-message :send-animation :edit-message-text :get-me :get-updates :send-message :set-my-name))
7(in-package :ukkoclot/bot/methods)
8
9(define-tg-method (answer-callback-query boolean)
10 (callback-query-id string)
11 (text (or string null) nil)
12 (show-alert boolean nil)
13 (url (or string null) nil)
14 (cache-time (or integer null) nil))
15
16(define-tg-method (delete-message boolean)
17 (chat-id (or integer string))
18 (message-id integer))
19
20;; TODO: Add a way to simply specify :message msg :)
21(define-tg-method (edit-message-text message)
22 (business-connection-id (or string null) nil)
23 (chat-id (or integer string null) nil)
24 (message-id (or integer null) nil)
25 (inline-message-id (or string null) nil)
26 (text string)
27 (parse-mode (or parse-mode null) nil)
28 (entities (or (array message-entity) null) nil)
29 (link-preview-options (or link-preview-options null) nil)
30 (reply-markup (or inline-keyboard-markup null) nil))
31
32(define-tg-method (get-me% user :GET))
33
34(defun get-me (bot)
35 (let ((res (get-me% bot)))
36 (setf (bot-id% bot) (user-id res))
37 (setf (bot-username% bot) (user-username res))
38 res))
39
40(define-tg-method (get-my-name bot-name :GET)
41 (language-code (or string null) nil))
42
43(define-tg-method (get-updates (array update))
44 (offset (or integer null) nil)
45 (limit (or integer null) nil)
46 (timeout (or integer null) nil)
47 (allowed-updates (or string null) nil))
48
49(define-tg-method (send-animation message)
50 (business-connection-id (or string null) nil)
51 (chat-id (or integer string))
52 (message-thread-id (or integer null) nil)
53 (direct-messages-topic-id (or integer null) nil)
54 (animation (or pathname string))
55 (duration (or integer null) nil)
56 (width (or integer null) nil)
57 (height (or integer null) nil)
58 (thumbnail (or pathname string null) nil)
59 (caption (or string null) nil)
60 (parse-mode (or parse-mode null) nil)
61 (caption-entities (or (array message-entity) null) nil)
62 (show-caption-above-media boolean nil)
63 (has-spoiler boolean nil)
64 (disable-notification boolean nil)
65 (protect-content boolean nil)
66 (allow-paid-broadcast boolean nil)
67 (message-effect-id (or string null) nil)
68 (suggested-post-parameters (or suggested-post-parameters null) nil)
69 (reply-parameters (or reply-parameters null) nil)
70 (reply-markup (or inline-keyboard-markup reply-keyboard-markup reply-keyboard-remove force-reply null) nil))
71
72(define-tg-method (send-message message)
73 (business-connection-id (or string null) nil)
74 (chat-id (or integer string))
75 (message-thread-id (or integer null) nil)
76 (text string)
77 (parse-mode (or parse-mode null) nil)
78 (entities (or (array message-entity) null) nil)
79 (link-preview-options (or link-preview-options null) nil)
80 (disable-notification (or boolean null) nil)
81 (protect-content (or boolean null) nil)
82 (message-effect-id (or string null) nil)
83 (reply-parameters (or reply-parameters null) nil)
84 (reply-markup (or inline-keyboard-markup reply-keyboard-markup reply-keyboard-remove force-reply null) nil))
85
86(define-tg-method (set-my-name% boolean)
87 (name (or string null) nil)
88 (language-code (or string null) nil))
89
90(defun set-my-name (bot &key (name nil) (language-code nil))
91 (block nil
92 (when name
93 (let ((curr-name (get-my-name bot :language-code language-code)))
94 (when (string= name (bot-name-name curr-name))
95 (return))))
96 (unless (set-my-name% bot :name name :language-code language-code)
97 (error "Failed to set name"))))