Skip to content
Snippets Groups Projects
Commit 8acd86eb authored by Frederic Aust's avatar Frederic Aust
Browse files

Berechtigungen und gruppenspezifische Daten.

parent e1c14bb6
Branches
No related tags found
No related merge requests found
...@@ -23,32 +23,34 @@ class Birthday: ...@@ -23,32 +23,34 @@ class Birthday:
class ModuleBirthdayReminder: class ModuleBirthdayReminder:
def __init__(self, filename, receiver, send, log): def __init__(self, groups, send, log):
self.tag = "%20s - " % "mBirthdayReminder" self.tag = "%20s - " % "mBirthdayReminder"
self.log = log self.log = log
self.filename = filename
self.receiver = receiver
self.send = send self.send = send
self.birthday_list = [] self.birthday_list = {}
self.load_birthday_list() for group in groups:
self.load_birthdays_from_csv(group)
self.log.debug(f"{self.tag}Modul BirthdayReminder geladen") self.log.debug(f"{self.tag}Modul BirthdayReminder geladen")
def load_birthday_list(self): def load_birthdays_from_csv(self, groupInfo):
lines = [] lines = []
try: try:
with open(self.filename, 'r', encoding='utf16') as f: with open(groupInfo["BIRTHDAYDIR"], 'r', encoding='utf16') as f:
lines = f.readlines() lines = f.readlines()
except IOError as exc: except IOError as exc:
self.log.error( self.log.error(
f"{self.tag}Reading birthdays from csv failed: {exc}") f"{self.tag}Reading birthdays from csv failed: {exc}")
self.birthday_list[groupInfo["NAME"]] = []
for line in lines: for line in lines:
try: try:
birthday = self.interpret_birthday_line(line) birthday = self.interpret_birthday_line(line)
self.birthday_list.append(birthday) self.birthday_list[groupInfo["NAME"]].append(birthday)
except (SyntaxError, ValueError) as exc: except (SyntaxError, ValueError) as exc:
self.log.warning( self.log.warning(
f"{self.tag}Error while interpreting birthday line:{line}; Error: {exc}") f"{self.tag}Error while interpreting birthday line:{line}; Error: {exc}")
...@@ -56,17 +58,18 @@ class ModuleBirthdayReminder: ...@@ -56,17 +58,18 @@ class ModuleBirthdayReminder:
def check_for_birthdays(self): def check_for_birthdays(self):
today = date.today() today = date.today()
dm = today.strftime("%d.%m") dm = today.strftime("%d.%m")
for birthday in self.birthday_list: for groups in self.birthday_list:
for birthday in groups:
if dm == birthday.DATE: if dm == birthday.DATE:
self.send(birthday.get_congratulation(), self.receiver) self.send(birthday.get_congratulation(), self.receiver)
def get_next_birthday(self): def get_next_birthday(self, groupInfo):
today = datetime.today() today = datetime.today()
format = "%d.%m.%Y" format = "%d.%m.%Y"
delta = 800 delta = 800
next_birthday = None next_birthday = None
birthday_next_year_string = "" birthday_next_year_string = ""
for birthday in self.birthday_list: for birthday in self.birthday_list[groupInfo["NAME"]]:
# Dieses Jahr # Dieses Jahr
birthday_string = f"{birthday.DATE}.{date.today().strftime('%Y')}" birthday_string = f"{birthday.DATE}.{date.today().strftime('%Y')}"
birthday_dt = datetime.strptime(birthday_string, format) birthday_dt = datetime.strptime(birthday_string, format)
...@@ -83,12 +86,14 @@ class ModuleBirthdayReminder: ...@@ -83,12 +86,14 @@ class ModuleBirthdayReminder:
if delta_temp < delta: if delta_temp < delta:
next_birthday = birthday next_birthday = birthday
delta = delta_temp delta = delta_temp
message = "Niemand hat hier Geburtstag! Wir sind in einer Zeitschleife gefangen."
if next_birthday:
message = f"Als nächstes hat {next_birthday.PERSON} am {next_birthday.DATE} Geburtstag (noch {delta} Tage)"
return message
return f"Als nächstes hat {next_birthday.PERSON} am {next_birthday.DATE} Geburtstag (noch {delta} Tage)" def get_birthdaylist(self,groupInfo ):
def get_birthdaylist(self):
message = "Alle Geburtstage:\n" message = "Alle Geburtstage:\n"
for birthday in self.birthday_list: for birthday in self.birthday_list[groupInfo["NAME"]]:
message += f"{birthday.PERSON}, {birthday.DATE}\n" message += f"{birthday.PERSON}, {birthday.DATE}\n"
return message return message
...@@ -117,39 +122,24 @@ class ModuleBirthdayReminder: ...@@ -117,39 +122,24 @@ class ModuleBirthdayReminder:
return Birthday(person, f"{day}.{month}") return Birthday(person, f"{day}.{month}")
def save_birthday(self, message): def save_birthday(self, message, groupInfo):
birthday: Birthday = None birthday: Birthday = None
try: try:
birthday = self.interpret_birthday_line(message) birthday = self.interpret_birthday_line(message)
if birthday in self.birthday_list: # TODO TESTEN!11 if birthday in self.birthday_list[groupInfo["NAME"]]:
return "Birthday is already saved" return "Birthday is already saved"
self.birthday_list.append(birthday) self.birthday_list[groupInfo["NAME"]].append(birthday)
except (SyntaxError, ValueError) as exc: except (SyntaxError, ValueError) as exc:
self.log.warning(f"{self.tag}Error while interpreting birthday line:{message}; Error: {exc}") self.log.warning(f"{self.tag}Error while interpreting birthday line:{message}; Error: {exc}")
return f"{exc}" return f"{exc}"
try: try:
with open(self.filename, 'a', encoding='utf16') as f: with open(groupInfo["BIRTHDAYDIR"], 'a', encoding='utf16') as f:
f.write(f"{birthday.get_csv_line()}\n") f.write(f"{birthday.get_csv_line()}\n")
return "Successfully added birthday" return "Successfully added birthday"
except IOError as exc: except IOError as exc:
self.log.error(f"{self.tag}Adding new birthday'{birthday.get_csv_line()}' to file failed: {exc}") self.log.error(f"{self.tag}Adding new birthday'{birthday.get_csv_line()}' to file failed: {exc}")
return "Saving birthday failed" return "Saving birthday failed"
def load_birthdays_from_csv(self):
lines = []
try:
with open(self.filename, 'r', encoding='utf16') as f:
lines = f.readlines()
except IOError as exc:
self.log.error(f"{self.tag}Reading birthdays from csv:'{self.filename}' failed: {exc}")
for line in lines:
try:
birthday = self.interpret_birthday_line(line)
self.birthday_list.append(birthday)
except (SyntaxError, ValueError) as exc:
self.log.warning(f"{self.tag}Error while interpreting birthday line:{line}; Error: {exc}")
...@@ -24,34 +24,39 @@ class Event: ...@@ -24,34 +24,39 @@ class Event:
class ModuleEventReminder: class ModuleEventReminder:
def __init__(self, filename, receiver, send, log): def __init__(self, groups, send, log):
self.tag = "%20s - " % "mEventReminder" self.tag = "%20s - " % "mEventReminder"
self.log = log self.log = log
self.filename = filename
self.receiver = receiver
self.send = send self.send = send
self.events = [] self.events = {}
self.load_event_list()
for group in groups:
self.load_events_from_csv(group)
self.log.debug(f"{self.tag}Modul EventReminder geladen") self.log.debug(f"{self.tag}Modul EventReminder geladen")
def load_event_list(self): def load_events_from_csv(self, groupInfo):
lines = [] lines = []
try: try:
with open(self.filename, 'r', encoding='utf16') as f: with open(groupInfo["EVENTDIR"], 'r', encoding='utf16') as f:
lines = f.readlines() lines = f.readlines()
except IOError as exc: except IOError as exc:
self.log.error( self.log.error(
f"{self.tag}Reading events from csv failed: {exc}") f"{self.tag}Reading events from csv failed: {exc}")
self.events[groupInfo["NAME"]] =[]
for line in lines: for line in lines:
try: try:
self.events.append(self.interpret_event_line(line)) self.events[groupInfo["NAME"]].append(self.interpret_event_line(line))
except (SyntaxError, ValueError) as exc: except (SyntaxError, ValueError) as exc:
self.log.warning(f"{self.tag}Error while interpreting event line:{line}; Error: {exc}") self.log.warning(f"{self.tag}Error while interpreting event line:{line}; Error: {exc}")
def check_for_events(self): def check_for_events(self):
today = date.today() today = date.today()
dm = today.strftime("%d.%m.%Y") dm = today.strftime("%d.%m.%Y")
for event in self.events: for groups in self.events:
for event in groups:
if dm == event.date: if dm == event.date:
self.send(event.get_event_msg(), self.receiver) self.send(event.get_event_msg(), self.receiver)
else: else:
...@@ -60,23 +65,26 @@ class ModuleEventReminder: ...@@ -60,23 +65,26 @@ class ModuleEventReminder:
if tomorrow == event.date: if tomorrow == event.date:
self.send(event.get_event_msg(), self.receiver) self.send(event.get_event_msg(), self.receiver)
def get_next_event(self): def get_next_event(self, groupInfo):
today = datetime.today() today = datetime.today()
format = "%d.%m.%Y" format = "%d.%m.%Y"
delta = 800 delta = 800
next_event = None next_event = None
for event in self.events: for event in self.events[groupInfo["NAME"]]:
event_dt = datetime.strptime(event.date, format) event_dt = datetime.strptime(event.date, format)
delta_temp = (event_dt - today).days delta_temp = (event_dt - today).days
if 0 < delta_temp < delta: if 0 < delta_temp < delta:
next_event = event next_event = event
delta = delta_temp delta = delta_temp
return f"Nächstes Event:\n{next_event.get_event_msg()}\nNoch {delta} Tage!" message = "Es ist ruhig... zu ruhig!"
if next_event:
message = f"Nächstes Event:\n{next_event.get_event_msg()}\nNoch {delta} Tage!"
return message
def get_eventlist(self): def get_eventlist(self, groupInfo):
message = "Alle Events:\n" message = "Alle Events:\n"
for event in self.events: # Dieses For geht bestimmt in einer Teile, so wie in signalbot.py for event in self.events[groupInfo["NAME"]]: # Dieses For geht bestimmt in einer Teile, so wie in signalbot.py
message += f"{event.headline}, {event.date}\n" message += f"{event.headline}, {event.date}\n"
return message return message
...@@ -109,38 +117,25 @@ class ModuleEventReminder: ...@@ -109,38 +117,25 @@ class ModuleEventReminder:
return Event(headline, f"{day}.{month}.{year}", " ".join(str(x) for x in splitted[2:])) return Event(headline, f"{day}.{month}.{year}", " ".join(str(x) for x in splitted[2:]))
def save_event(self, message): def save_event(self, message, groupInfo):
event: Event = None event: Event = None
try: try:
event = self.interpret_event_line(message) event = self.interpret_event_line(message)
if event in self.events: # TODO TESTEN!11 if event in self.events[groupInfo["NAME"]]: # TODO TESTEN!11
return "Event is already saved" return "Event is already saved"
self.events.append(event) self.events[groupInfo["NAME"]].append(event)
except (SyntaxError, ValueError) as exc: except (SyntaxError, ValueError) as exc:
self.log.warning(f"{self.tag}Error while interpreting event line:{message}; Error: {exc}") self.log.warning(f"{self.tag}Error while interpreting event line:{message}; Error: {exc}")
return f"{exc}" return f"{exc}"
try: try:
with open(self.filename, 'a', encoding='utf16') as f: with open(groupInfo["EVENTDIR"], 'a', encoding='utf16') as f:
f.write(f"{event.get_csv_line()}\n") f.write(f"{event.get_csv_line()}\n")
return "Successfully added event" return "Successfully added event"
except IOError as exc: except IOError as exc:
self.log.error(f"{self.tag}Adding new event'{event.get_csv_line()}' to file failed: {exc}") self.log.error(f"{self.tag}Adding new event'{event.get_csv_line()}' to file failed: {exc}")
return "Saving event failed" return "Saving event failed"
def load_events_from_csv(self):
lines = []
try:
with open(self.filename, 'r', encoding='utf16') as f:
lines = f.readlines()
except IOError as exc:
self.log.error(f"{self.tag}Reading events from csv:'{self.filename}' failed: {exc}")
for line in lines:
try:
event = self.interpret_event_line(line)
self.events.append(event)
except (SyntaxError, ValueError) as exc:
self.log.warning(f"{self.tag}Error while interpreting event line:{line}; Error: {exc}")
...@@ -23,7 +23,7 @@ class ModuleHelp: ...@@ -23,7 +23,7 @@ class ModuleHelp:
return help_dict return help_dict
def search_command(self, keyword): def search_command(self, keyword, groupInfo):
answer = '' answer = ''
try: try:
keyword = keyword.strip().lower() keyword = keyword.strip().lower()
...@@ -32,7 +32,7 @@ class ModuleHelp: ...@@ -32,7 +32,7 @@ class ModuleHelp:
for category in self.help_dict: for category in self.help_dict:
for command in self.help_dict[category]: for command in self.help_dict[category]:
if keyword in [x.lower() for x in command["Names"]]: if keyword in [x.lower() for x in command["Names"]] and (groupInfo is None or keyword[1:] in groupInfo["COMMANDS"]):
answer += f'Name(s): {", ".join(str(x) for x in command["Names"])}\n' answer += f'Name(s): {", ".join(str(x) for x in command["Names"])}\n'
answer += f'Description: \n{command["Description"]}' answer += f'Description: \n{command["Description"]}'
break break
...@@ -47,13 +47,21 @@ class ModuleHelp: ...@@ -47,13 +47,21 @@ class ModuleHelp:
return answer return answer
def get_all_commands(self): def get_all_commands(self, groupInfo):
answer = '' answer = ''
try: try:
for category in self.help_dict: for category in self.help_dict:
answer += f'## {category} ##\n' cmdList=''
for command in self.help_dict[category]: for command in self.help_dict[category]:
answer += f'{", ".join(str(x) for x in [x.lower() for x in command["Names"]])}\n' cmds = []
for cmd in command["Names"]:
if (groupInfo is None or cmd[1:] in groupInfo["COMMANDS"]):
cmds.append(cmd)
if len(cmds)>0:
cmdList += f'{", ".join(str(x) for x in [x.lower() for x in cmds])}\n'
if len(cmdList) >0:
answer += f'## {category} ##\n'
answer+= cmdList
answer += '\n' answer += '\n'
if answer == '': if answer == '':
......
...@@ -33,12 +33,12 @@ class Quote: ...@@ -33,12 +33,12 @@ class Quote:
class ModuleQuotes: class ModuleQuotes:
def __init__(self,filename, log): def __init__(self, groups, log):
self.tag = "%20s - " % "mQuotes" self.tag = "%20s - " % "mQuotes"
self.log = log self.log = log
self.filename = filename self.quotes = {}
self.quotes = [] for group in groups:
self.load_quotes_from_csv() self.load_quotes_from_csv(group)
self.log.debug(f"{self.tag}Modul Quotes geladen") self.log.debug(f"{self.tag}Modul Quotes geladen")
...@@ -50,38 +50,46 @@ class ModuleQuotes: ...@@ -50,38 +50,46 @@ class ModuleQuotes:
quote = Quote(",".join(splitted[0:-2]), splitted[-2], splitted[-1]) quote = Quote(",".join(splitted[0:-2]), splitted[-2], splitted[-1])
return quote return quote
def save_quote(self, message): def save_quote(self, message, groupInfo):
quote: Quote = None quote: Quote = None
try: try:
quote = self.interpret_quote_line(message) quote = self.interpret_quote_line(message)
self.quotes.append(quote) if groupInfo["NAME"] in self.quotes:
self.quotes[groupInfo["NAME"]].append(quote)
else:
self.log.critical( f'{self.tag}Error while appending quote to self.quotes group:{groupInfo["NAME"]} line:{message}; Error: {exc}')
except (SyntaxError, ValueError) as exc: except (SyntaxError, ValueError) as exc:
self.log.warning( f"{self.tag}Error while interpreting quote line:{message}; Error: {exc}") self.log.warning( f"{self.tag}Error while interpreting quote line:{message}; Error: {exc}")
return f"{exc}" return f"{exc}"
try: try:
with open(self.filename, 'a', encoding='utf16') as f: with open(groupInfo["QUOTESDIR"], 'a', encoding='utf16') as f:
f.write(quote.get_csv_line()) f.write(quote.get_csv_line())
return "Successfully added quote" return "Successfully added quote"
except IOError as exc: except IOError as exc:
self.log.error(f"{self.tag}Adding new Quote to file failed: {exc}") self.log.error(f"{self.tag}Adding new Quote to file failed: {exc}")
return "Saving quote failed" return "Saving quote failed"
def load_quotes_from_csv(self): def load_quotes_from_csv(self, groupInfo):
lines = [] lines = []
try: try:
with open(self.filename, 'r', encoding='utf16') as f: with open(groupInfo["QUOTESDIR"], 'r', encoding='utf16') as f:
lines = f.readlines() lines = f.readlines()
except IOError as exc: except IOError as exc:
self.log.error(f"{self.tag}Reading quotes from csv:'{self.filename}' failed: {exc}") self.log.error(f'{self.tag}Reading quotes from csv:\'{groupInfo["QUOTESDIR"]}\' failed: {exc}')
self.quotes[groupInfo["NAME"]] = []
for line in lines: for line in lines:
try: try:
quote = self.interpret_quote_line(line) quote = self.interpret_quote_line(line)
self.quotes.append(quote) self.quotes[groupInfo["NAME"]].append(quote)
except (SyntaxError, ValueError) as exc: except (SyntaxError, ValueError) as exc:
self.log.warning( f"{self.tag}Error while interpreting quote line:{line}; Error: {exc}") self.log.warning( f"{self.tag}Error while interpreting quote line:{line}; Error: {exc}")
def get_random_quote(self): def get_random_quote(self, groupInfo):
return random.choice(self.quotes).get_quote() message = "Sorry, there are no quotes"
if groupInfo["NAME"] in self.quotes and len(self.quotes[groupInfo["NAME"]]):
message = random.choice(self.quotes[groupInfo["NAME"]]).get_quote()
return message
\ No newline at end of file
...@@ -64,8 +64,6 @@ event_reminder = None ...@@ -64,8 +64,6 @@ event_reminder = None
CONFIG = {} CONFIG = {}
FUN_DICT = {} FUN_DICT = {}
NTP_LINKS = {}
NTP_PASSWORD = ""
MQTT_USER = "" MQTT_USER = ""
MQTT_PWD = "" MQTT_PWD = ""
...@@ -80,8 +78,6 @@ GROUPS = {} ...@@ -80,8 +78,6 @@ GROUPS = {}
def load_config(filename): def load_config(filename):
global CONFIG global CONFIG
global FUN_DICT global FUN_DICT
global NTP_LINKS
global NTP_PASSWORD
global MQTT_USER global MQTT_USER
global MQTT_PWD global MQTT_PWD
...@@ -95,10 +91,6 @@ def load_config(filename): ...@@ -95,10 +91,6 @@ def load_config(filename):
CONFIG = json.load(open(filename, 'r')) CONFIG = json.load(open(filename, 'r'))
if "FUN_DICT" in CONFIG: if "FUN_DICT" in CONFIG:
FUN_DICT = CONFIG["FUN_DICT"] FUN_DICT = CONFIG["FUN_DICT"]
if "NTP_LINKS" in CONFIG:
NTP_LINKS = CONFIG["NTP_LINKS"]
if "NTP_PASSWORD" in CONFIG:
NTP_PASSWORD = CONFIG["NTP_PASSWORD"]
if "MQTT" in CONFIG: if "MQTT" in CONFIG:
if "mqtt.local" in CONFIG["MQTT"]: if "mqtt.local" in CONFIG["MQTT"]:
if "MQTT_USER" in CONFIG["MQTT"]["mqtt.local"]: if "MQTT_USER" in CONFIG["MQTT"]["mqtt.local"]:
...@@ -131,7 +123,18 @@ def handle_action(timestamp, source, groupID, message, attachments): ...@@ -131,7 +123,18 @@ def handle_action(timestamp, source, groupID, message, attachments):
print(groupID) print(groupID)
print(message) print(message)
print(attachments) print(attachments)
receiver = groupID if len(groupID) > 0 else source receiver = source
groupInfo = None
if len(groupID) > 0:
receiver = groupID
# wenn gruppe, dann berechtigungsobjekt suchen um die rechte zu beschneiden
for group in GROUPS:
if group["ID"] == groupID:
groupInfo = group
break
try: try:
message = message[1:].strip() message = message[1:].strip()
msg_splitted = message.split(" ") msg_splitted = message.split(" ")
...@@ -139,54 +142,51 @@ def handle_action(timestamp, source, groupID, message, attachments): ...@@ -139,54 +142,51 @@ def handle_action(timestamp, source, groupID, message, attachments):
if len(action) == 0: if len(action) == 0:
return return
if action == "help": if action == "help":
help_func(receiver, " ".join(str(x) for x in msg_splitted[1:]).strip()) help_func(receiver, " ".join(str(x) for x in msg_splitted[1:]).strip(), groupInfo)
elif action == "remusfeinste": elif action == "remusfeinste" and (groupInfo is None or action in groupInfo["COMMANDS"]):
remus_feinste(receiver) remus_feinste(receiver)
elif action == "yesno" or action == "yn": elif (action == "yesno" or action == "yn")and (groupInfo is None or action in groupInfo["COMMANDS"]):
yes_no_wtf(receiver, action) yes_no_wtf(receiver, action)
elif action == "dadjoke": elif action == "dadjoke"and (groupInfo is None or action in groupInfo["COMMANDS"]):
dadjoke(receiver) dadjoke(receiver)
elif action == "links": elif action == "links"and (groupInfo is not None and action in groupInfo["COMMANDS"]):
password = "" links( receiver, groupInfo)
if len(msg_splitted) >= 2:
password = msg_splitted[1]
links(password, receiver)
elif action in FUN_DICT: elif action in FUN_DICT:
send(FUN_DICT[action], receiver) send(FUN_DICT[action], receiver)
elif action == "savequote": elif action == "savequote" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
save_quote(receiver, " ".join(str(x) for x in msg_splitted[1:])) save_quote(receiver, " ".join(str(x) for x in msg_splitted[1:]), groupInfo)
elif action == "randomquote": elif action == "randomquote" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
random_quote(receiver) random_quote(receiver, groupInfo)
elif action == "credits": elif action == "credits":
credits(receiver) credits(receiver)
elif action == "freegames": elif action == "freegames" and (groupInfo is None or action in groupInfo["COMMANDS"]):
free_games(receiver) free_games(receiver)
elif action == "gn" or action == "genderneutral": elif (action == "gn" or action == "genderneutral") and (groupInfo is None or action in groupInfo["COMMANDS"]):
genderneutral(receiver, " ".join(str(x) for x in msg_splitted[1:])) genderneutral(receiver, " ".join(str(x) for x in msg_splitted[1:]))
elif action == "schlücke" or action == "sips": elif (action == "schlücke" or action == "sips") and (groupInfo is None or action in groupInfo["COMMANDS"]):
sips(receiver) sips(receiver)
elif action == "roll": elif action == "roll" and (groupInfo is None or action in groupInfo["COMMANDS"]):
roll(receiver, " ".join(str(x) for x in msg_splitted[1:])) roll(receiver, " ".join(str(x) for x in msg_splitted[1:]))
elif action == "request": elif action == "request":
request(receiver, " ".join(str(x) for x in msg_splitted[1:])) request(receiver, " ".join(str(x) for x in msg_splitted[1:]))
elif action == "challenge": elif action == "challenge" and (groupInfo is None or action in groupInfo["COMMANDS"]):
get_random_challenge(receiver) get_random_challenge(receiver)
elif action == "savebirthday": elif action == "savebirthday" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
save_birthday(receiver, " ".join(str(x) for x in msg_splitted[1:])) save_birthday(receiver, " ".join(str(x) for x in msg_splitted[1:]), groupInfo)
elif action == "allbirthdays": elif action == "allbirthdays" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
get_all_birthdays(receiver) get_all_birthdays(receiver, groupInfo)
elif action == "nextbirthday": elif action == "nextbirthday" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
get_next_birthday(receiver) get_next_birthday(receiver, groupInfo)
elif action == "saveevent": elif action == "saveevent" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
save_event(receiver, " ".join(str(x) for x in msg_splitted[1:])) save_event(receiver, " ".join(str(x) for x in msg_splitted[1:]), groupInfo)
elif action == "allevents": elif action == "allevents" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
get_all_events(receiver) get_all_events(receiver, groupInfo)
elif action == "nextevent": elif action == "nextevent" and (groupInfo is not None and action in groupInfo["COMMANDS"]):
get_next_event(receiver) get_next_event(receiver, groupInfo)
elif action == "tex": elif action == "tex" and (groupInfo is None or action in groupInfo["COMMANDS"]):
get_tex_formula(receiver, " ".join(str(x) for x in msg_splitted[1:])) get_tex_formula(receiver, " ".join(str(x) for x in msg_splitted[1:]))
else: else:
unknown_command(receiver, message) unknown_command(receiver, message) # wenn nicht berechtigt, dann "ich seh nix, ich weiss nix, ich hör nix" => unbekannter befehl
except Exception as ex: except Exception as ex:
log.critical(f'Unknown error:"{ex}", timestamp="{timestamp}", source="{source}", groupID="{groupID}", ' log.critical(f'Unknown error:"{ex}", timestamp="{timestamp}", source="{source}", groupID="{groupID}", '
f'message="{message}", attachments="{attachments}"') f'message="{message}", attachments="{attachments}"')
...@@ -210,12 +210,12 @@ def send_a(message, receiver, attachment): ...@@ -210,12 +210,12 @@ def send_a(message, receiver, attachment):
signal.sendGroupMessage(message, [attachment], receiver) signal.sendGroupMessage(message, [attachment], receiver)
def help_func(receiver, message): def help_func(receiver, message, groupInfo):
answer = "" answer = ""
if len(message) > 0: if len(message) > 0:
answer = help.search_command(message) answer = help.search_command(message, groupInfo)
else: else:
answer = help.get_all_commands() answer = help.get_all_commands(groupInfo)
send(answer, receiver) send(answer, receiver)
...@@ -251,13 +251,17 @@ def next_event(receiver): ...@@ -251,13 +251,17 @@ def next_event(receiver):
send("", receiver) send("", receiver)
def links(password, receiver): def links(receiver, groupInfo):
message = "Bitte das Passwort angeben!" links = {}
if len(NTP_LINKS) == 0: if groupInfo is not None and "LINKS" in groupInfo:
links = groupInfo["LINKS"]
if len(links) == 0:
message = "Keine Links hinterlegt!" message = "Keine Links hinterlegt!"
elif password.lower() == NTP_PASSWORD: else:
message = "" message = ""
for key, value in NTP_LINKS.items(): for key, value in links.items():
if type(value) is str: if type(value) is str:
message += key + ":\n" # Gruppenname / Linkbezeichnung message += key + ":\n" # Gruppenname / Linkbezeichnung
message += value + " \n" message += value + " \n"
...@@ -274,12 +278,12 @@ def links(password, receiver): ...@@ -274,12 +278,12 @@ def links(password, receiver):
send(message, receiver) send(message, receiver)
def save_quote(receiver, quote_line): def save_quote(receiver, quote_line, groupInfo):
send(quotes.save_quote(quote_line), receiver) send(quotes.save_quote(quote_line, groupInfo), receiver)
def random_quote(receiver): def random_quote(receiver,groupInfo):
send(quotes.get_random_quote(), receiver) send(quotes.get_random_quote(groupInfo), receiver)
def credits(receiver): def credits(receiver):
...@@ -357,46 +361,28 @@ def get_random_challenge(receiver): ...@@ -357,46 +361,28 @@ def get_random_challenge(receiver):
send(message, receiver) send(message, receiver)
def save_birthday(receiver, birthday_line): def save_birthday(receiver, birthday_line, groupInfo):
message = "Du besitzt nicht die notwendigen Zugriffsrechte!" send(birthday_reminder.save_birthday(birthday_line, groupInfo), receiver)
if receiver == GROUPS["ntp"] or receiver == GROUPS["Testung"]:
message = birthday_reminder.save_birthday(birthday_line)
send(message, receiver)
def get_all_birthdays(receiver): def get_all_birthdays(receiver, groupInfo):
message = "Du besitzt nicht die notwendigen Zugriffsrechte!" send(birthday_reminder.get_birthdaylist(groupInfo), receiver)
if receiver == GROUPS["ntp"] or receiver == GROUPS["Testung"]:
message = birthday_reminder.get_birthdaylist()
send(message, receiver)
def get_next_birthday(receiver): def get_next_birthday(receiver, groupInfo):
message = "Du besitzt nicht die notwendigen Zugriffsrechte!" send(birthday_reminder.get_next_birthday(groupInfo), receiver)
if receiver == GROUPS["ntp"] or receiver == GROUPS["Testung"]:
message = birthday_reminder.get_next_birthday()
send(message, receiver)
def save_event(receiver, event_line): def save_event(receiver, event_line, groupInfo):
message = "Du besitzt nicht die notwendigen Zugriffsrechte!" send(event_reminder.save_event(event_line, groupInfo), receiver)
if receiver == GROUPS["ntp"] or receiver == GROUPS["Testung"]:
message = event_reminder.save_event(event_line)
send(message, receiver)
def get_all_events(receiver): def get_all_events(receiver, groupInfo ):
message = "Du besitzt nicht die notwendigen Zugriffsrechte!" send(event_reminder.get_eventlist(groupInfo), receiver)
if receiver == GROUPS["ntp"] or receiver == GROUPS["Testung"]:
message = event_reminder.get_eventlist()
send(message, receiver)
def get_next_event(receiver): def get_next_event(receiver, groupInfo):
message = "Du besitzt nicht die notwendigen Zugriffsrechte!" send( event_reminder.get_next_event(groupInfo), receiver)
if receiver == GROUPS["ntp"] or receiver == GROUPS["Testung"]:
message = event_reminder.get_next_event()
send(message, receiver)
def unknown_command(receiver, message): def unknown_command(receiver, message):
...@@ -451,13 +437,13 @@ if __name__ == "__main__": ...@@ -451,13 +437,13 @@ if __name__ == "__main__":
load_config('/home/pi/signalbot/config.json') load_config('/home/pi/signalbot/config.json')
gn = ModuleGenderneutral('gn.json', log) gn = ModuleGenderneutral('gn.json', log)
quotes = ModuleQuotes('quotes.csv', log) quotes = ModuleQuotes(GROUPS, log)
games = ModuleFreeGames(FREE_GAMES_SUBSCRIBER, send_a, log) games = ModuleFreeGames(FREE_GAMES_SUBSCRIBER, send_a, log)
challenges = ModuleChallenge('/home/pi/signalbot/challenge.json', log) challenges = ModuleChallenge('/home/pi/signalbot/challenge.json', log)
birthday_reminder = ModuleBirthdayReminder('birthdays.csv', GROUPS["ntp"], send, log) birthday_reminder = ModuleBirthdayReminder(GROUPS , send, log)
tex = ModuleTex(log) tex = ModuleTex(log)
help = ModuleHelp('/home/pi/signalbot/betterhelp.json', log) help = ModuleHelp('/home/pi/signalbot/betterhelp.json', log)
event_reminder = ModuleEventReminder('events.csv', GROUPS["ntp"], send, log) event_reminder = ModuleEventReminder(GROUPS, send, log)
loop = GLib.MainLoop() loop = GLib.MainLoop()
bus = SystemBus() bus = SystemBus()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment