summaryrefslogtreecommitdiff
path: root/src/inline-bots.lisp
blob: 594508492a8646eb54987dd433eadd3da1d96f1c (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
;; SPDX-License-Identifier: EUPL-1.2
;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com>
(defpackage :ukkoclot/inline-bots
  (:use :c2cl :ukkoclot/bot :ukkoclot/config :ukkoclot/log :ukkoclot/tg-types)
  (:local-nicknames (:db :ukkoclot/db))
  (:export :blacklist-inline-bot :on-inline-bot :whitelist-inline-bot))
(in-package :ukkoclot/inline-bots)

(defun blacklist-inline-bot (bot inline-bot-id)
  (db:set-inline-bot-type (bot-db bot) inline-bot-id :blacklisted))

(defun whitelist-inline-bot (bot inline-bot-id)
  (db:set-inline-bot-type (bot-db bot) inline-bot-id :whitelisted))

(defun on-inline-bot (bot msg via)
  (let ((ty (db:get-inline-bot-type (bot-db bot) (user-id via))))
    (if (eq ty :whitelisted)
        t
        (progn
          (log-info "Deleting an unallowed inline bot message from ~A ~A"
                    (user-username via)
                    (user-id via))
          (delete-message bot
                          :chat-id (message-chat-id msg)
                          :message-id (message-id msg))
          (unless (eq ty :blacklisted)
            ;; Not explicitly blacklisted, notify dev group
            (send-message bot
             :chat-id (config-dev-group (bot-config bot))
             :text (format nil "Deleted a message sent via inline bot @~A <code>~A</code>"
                           (user-username via)
                           (user-id via))
             :parse-mode "HTML"
             :reply-markup (make-inline-keyboard-markup
                            :inline-keyboard
                            #(#((make-inline-keyboard-button
                                 :text "Whitelist"
                                 :callback-data (format nil "bwl:~A" (user-id via)))
                                (make-inline-keyboard-button
                                 :text "Blacklist"
                                 :callback-data (format nil "bbl:~A" (user-id via))))))))
          nil))))