From 4da3ad1f569832845b58c3ce35149633a2bb665c Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Thu, 9 Oct 2025 21:58:43 +0300 Subject: Initial commit --- src/inline-bots.lisp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/inline-bots.lisp (limited to 'src/inline-bots.lisp') diff --git a/src/inline-bots.lisp b/src/inline-bots.lisp new file mode 100644 index 0000000..5945084 --- /dev/null +++ b/src/inline-bots.lisp @@ -0,0 +1,42 @@ +;; 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)))) -- cgit v1.2.3