;; SPDX-License-Identifier: EUPL-1.2 ;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs (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 ~A" (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))))