summaryrefslogtreecommitdiff
path: root/src/tg/set-my-name.lisp
blob: 2b3869a03f0ca3a77af9d32360830fcf563bba7b (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
;; SPDX-License-Identifier: EUPL-1.2
;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com>
(defpackage :ukkoclot/src/tg/set-my-name
  (:documentation "setMyName Telegram method.")
  (:use :c2cl :ukkoclot/src/tg/bot-name :ukkoclot/src/tg/get-my-name :ukkoclot/src/tg/method-macros)
  (:export :set-my-name))
(in-package :ukkoclot/src/tg/set-my-name)

(define-tg-method (set-my-name% boolean)
  (name (or string null) nil)
  (language-code (or string null) nil))

(defun set-my-name (&key (name nil) (language-code nil))
  "setMyName Telegram method.

We also first check if the name is already set because setMyName has a very heavy rate limiting impact."
  (block nil
    (when name
      (let ((curr-name (get-my-name :language-code language-code)))
        (when (string= name (bot-name-name curr-name))
          (return))))
    (unless (set-my-name% :name name :language-code language-code)
      (error "Failed to set name"))))