Add silent activation/deactivation
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -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
|
||||||
|
@@ -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(
|
||||||
|
@@ -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):
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user