forked from missytake/team-bot
initial logic for handling incoming messages
This commit is contained in:
parent
2dc309dd09
commit
2905730cca
|
@ -25,6 +25,47 @@ class SetupPlugin:
|
||||||
self.message_sent.set()
|
self.message_sent.set()
|
||||||
|
|
||||||
|
|
||||||
|
class RelayPlugin:
|
||||||
|
def __init__(self, account: deltachat.Account):
|
||||||
|
self.account = account
|
||||||
|
|
||||||
|
@account_hookimpl
|
||||||
|
def ac_incoming_message(self, message: deltachat.Message):
|
||||||
|
"""This method is called on every incoming message and decides what to do with it."""
|
||||||
|
logging.info(
|
||||||
|
"New message from %s in chat %s: %s",
|
||||||
|
message.get_sender_contact().addr,
|
||||||
|
message.chat.get_name(),
|
||||||
|
message.text,
|
||||||
|
)
|
||||||
|
|
||||||
|
if message.is_system_message():
|
||||||
|
logging.debug("This is a system message")
|
||||||
|
""":TODO handle chat name changes"""
|
||||||
|
return
|
||||||
|
|
||||||
|
if message.chat.id == get_crew_id(self.account):
|
||||||
|
if message.text.startswith("/"):
|
||||||
|
logging.debug("handling command by %s: %s", message.get_sender_contact().addr, message.text)
|
||||||
|
""":TODO handle command"""
|
||||||
|
else:
|
||||||
|
logging.debug("Ignoring message, just admins chatting")
|
||||||
|
|
||||||
|
elif message.chat.get_contacts() == self.account.get_chat_by_id(
|
||||||
|
get_crew_id(self.account)
|
||||||
|
).get_contacts() and message.chat.get_name().startswith(
|
||||||
|
"[%s] " % (self.account.get_config("addr").split("@")[0],)
|
||||||
|
):
|
||||||
|
if message.quote.get_sender_contact() == self.account.get_self_contact():
|
||||||
|
""":TODO forward to original sender"""
|
||||||
|
else:
|
||||||
|
logging.debug("Ignoring message, just admins chatting")
|
||||||
|
|
||||||
|
else:
|
||||||
|
logging.debug("Forwarding message to relay group")
|
||||||
|
""":TODO forward message to relay group"""
|
||||||
|
|
||||||
|
|
||||||
def get_crew_id(ac: deltachat.Account, setupplugin: SetupPlugin = None) -> int:
|
def get_crew_id(ac: deltachat.Account, setupplugin: SetupPlugin = None) -> int:
|
||||||
"""Get the group ID of the crew group if it exists; warn old crews if they might still believe they are the crew.
|
"""Get the group ID of the crew group if it exists; warn old crews if they might still believe they are the crew.
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import click
|
||||||
import qrcode
|
import qrcode
|
||||||
import deltachat
|
import deltachat
|
||||||
|
|
||||||
from .bot import SetupPlugin, get_crew_id
|
from .bot import SetupPlugin, RelayPlugin, get_crew_id
|
||||||
|
|
||||||
|
|
||||||
def set_log_level(verbose: int, db: str):
|
def set_log_level(verbose: int, db: str):
|
||||||
|
@ -113,6 +113,16 @@ def init(ctx, email: str, password: str, db: str, verbose: int):
|
||||||
def run(ctx, db: str, verbose: int):
|
def run(ctx, db: str, verbose: int):
|
||||||
set_log_level(verbose, db)
|
set_log_level(verbose, db)
|
||||||
|
|
||||||
|
ac = deltachat.Account(db)
|
||||||
|
ac.run_account(account_plugins=[RelayPlugin(ac)], show_ffi=verbose)
|
||||||
|
try:
|
||||||
|
ac.wait_shutdown()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
logging.info("Received KeyboardInterrupt")
|
||||||
|
print("Shutting down...")
|
||||||
|
ac.shutdown()
|
||||||
|
ac.wait_shutdown()
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
teams_bot(auto_envvar_prefix="TEAMS")
|
teams_bot(auto_envvar_prefix="TEAMS")
|
||||||
|
|
Loading…
Reference in a new issue