Add silent activation/deactivation

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2023-04-05 20:01:38 +03:00
parent 5637d0fced
commit 5177be3e25
4 changed files with 12 additions and 7 deletions

View File

@@ -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

View File

@@ -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(

View File

@@ -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):

View File

@@ -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)