From 5177be3e25b58754ab85480b226b643c741f95e1 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Wed, 5 Apr 2023 20:01:38 +0300 Subject: [PATCH] Add silent activation/deactivation Signed-off-by: Nikolaos Karaolidis --- src/handlers/thread.py | 4 ++-- src/main.py | 8 ++++---- src/singletons/database.py | 1 + src/utils/regex.py | 6 +++++- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/handlers/thread.py b/src/handlers/thread.py index f9b18ad..68a3b5c 100644 --- a/src/handlers/thread.py +++ b/src/handlers/thread.py @@ -4,11 +4,11 @@ from singletons import database def activate_thread(event: fbchat.MessageEvent): thread_db = database.create_thread(event.thread) - event.thread.send_text("> Admina activated in thread", reply_to_id=event.message.id) + event.message.react("👀") return thread_db def deactivate_thread(event: fbchat.MessageEvent): thread_db = database.delete_thread(event.thread) - event.thread.send_text("> Admina deactivated in thread") + event.message.react("✌️") return thread_db diff --git a/src/main.py b/src/main.py index 1bbd921..b7c12dd 100644 --- a/src/main.py +++ b/src/main.py @@ -3,7 +3,7 @@ from blinker import Signal from threading import Thread from singletons import logger, session, listener, client, database from handlers import handle_conversation, activate_thread, deactivate_thread -from utils import mentions_admina, mentions_everyone +from utils import mentions_admina, mentions_everyone, is_specific_command COMMANDS = { @@ -33,11 +33,11 @@ def handle_message(_, event: fbchat.MessageEvent): return if not database.get_thread(event.thread): - if not event.message.text.lower().startswith("!activate"): + if is_specific_command(event.message.text, "!activate") or mentions_admina(event.message.text): + COMMANDS["activate"]["handler"](event) + else: return - return COMMANDS["activate"]["handler"](event) - database.create_message(event.thread, event.message) logger.info( diff --git a/src/singletons/database.py b/src/singletons/database.py index 55c0b94..2eb6163 100644 --- a/src/singletons/database.py +++ b/src/singletons/database.py @@ -39,6 +39,7 @@ class Database: }}, upsert=True) def delete_thread(self, thread: fbchat.Thread): + self.client.messages.delete_many({"thread_id": thread.id}) return self.client.threads.delete_one({"_id": thread.id}) def get_messages_from_thread(self, thread: fbchat.Thread): diff --git a/src/utils/regex.py b/src/utils/regex.py index bb914cc..f857145 100644 --- a/src/utils/regex.py +++ b/src/utils/regex.py @@ -1,4 +1,4 @@ -from re import search, IGNORECASE +from re import match, search, IGNORECASE def mentions_admina(message: str): @@ -7,3 +7,7 @@ def mentions_admina(message: str): def mentions_everyone(message: str): return search(r"\s*@everyone\s*", message, flags=IGNORECASE) + + +def is_specific_command(message: str, command: str): + return match(rf"{command}\s*", message, flags=IGNORECASE)