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