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): def activate_thread(event: fbchat.MessageEvent):
thread_db = database.create_thread(event.thread) 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 return thread_db
def deactivate_thread(event: fbchat.MessageEvent): def deactivate_thread(event: fbchat.MessageEvent):
thread_db = database.delete_thread(event.thread) thread_db = database.delete_thread(event.thread)
event.thread.send_text("> Admina deactivated in thread") event.message.react("✌️")
return thread_db return thread_db

View File

@@ -3,7 +3,7 @@ from blinker import Signal
from threading import Thread from threading import Thread
from singletons import logger, session, listener, client, database from singletons import logger, session, listener, client, database
from handlers import handle_conversation, activate_thread, deactivate_thread 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 = { COMMANDS = {
@@ -33,11 +33,11 @@ def handle_message(_, event: fbchat.MessageEvent):
return return
if not database.get_thread(event.thread): 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
return COMMANDS["activate"]["handler"](event)
database.create_message(event.thread, event.message) database.create_message(event.thread, event.message)
logger.info( logger.info(

View File

@@ -39,6 +39,7 @@ class Database:
}}, upsert=True) }}, upsert=True)
def delete_thread(self, thread: fbchat.Thread): 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}) return self.client.threads.delete_one({"_id": thread.id})
def get_messages_from_thread(self, thread: fbchat.Thread): 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): def mentions_admina(message: str):
@@ -7,3 +7,7 @@ def mentions_admina(message: str):
def mentions_everyone(message: str): def mentions_everyone(message: str):
return search(r"\s*@everyone\s*", message, flags=IGNORECASE) 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)