def message_react(token, message_id, react_id): global data global valid_tokens global channels try: u_id = decodeToken(token) #check if react_id is valid at the start if react_id != 1: raise ValueError("Invalid react ID!") message = getMessage(message_id) channel = getMessageChannel(message_id) isUserChan(u_id, channel) for react in message["reacts"]: for react_users in react[ "u_ids"]: #check that the user hasn't already reacted if react_users == u_id: raise ValueError( "User already has an active react for this message!") for react in message["reacts"]: if react["react_id"] == react_id: react["u_ids"].append(u_id) #add the reaction return {} message["reacts"].append({ "react_id": react_id, "u_ids": [u_id] }) # genereate the react and ass return {} except ValueError as e: raise e except AccessError as e: raise e
def message_unpin(token, message_id): global data global valid_tokens global channels try: u_id = decodeToken(token) message = getMessage(message_id) channel = getMessageChannel(message_id) isUserChan(u_id, channel) #Will raise error if fails for members in data: if members["u_id"] == u_id: if int(members["permission_id"]) == 1 or int(members["permission_id"]) == 2: #check user is admin ############ ADMIN OR OWNER? if message["is_pinned"]: #check if pinned message["is_pinned"] = False return {} raise ValueError("Message is not pinned!") raise ValueError("User does not have permission to unpin!") except ValueError as e: raise e except AccessError as e: raise e
def message_unreact(token, message_id, react_id): global channels try: u_id = decodeToken(token) #check if react_id is valid at the start if react_id != 1: raise ValueError("Invalid react ID!") channel = getMessageChannel(message_id) message = getMessage(message_id) isUserChan(u_id, channel) #Will raise error if fails for react in message["reacts"]: for react_users in react["u_ids"]: #check that the user hasn't already reacted if react_users == u_id: react["u_ids"].remove(u_id) return {} raise ValueError("User already has no active react for this message!") except ValueError as e: raise e except AccessError as e: raise e
def message_edit(token, message_id, new_message): global channels try: u_id = decodeToken(token) message = getMessage(message_id) channel = getMessageChannel(message_id) if message["u_id"] == u_id: #check if user is the sender doEdit(message, new_message, token) return {} for members in channel["owner_members"]: #user is owner of channel if members["u_id"] == u_id: doEdit(message, new_message, token) return {} users = getUser(u_id) #user is admin if users["permission_id"] == 1 or users["permission_id"] == 2: doEdit(message, new_message, token) return {} raise AccessError("User does not have permission to edit message!") except ValueError as e: raise e except AccessError as e: raise e
def message_remove(token, message_id): global channels try: u_id = decodeToken(token) message = getMessage(message_id) channel = getMessageChannel(message_id) if message["u_id"] == u_id: #check if user is the sender channel["messages"].remove(message) return {} for members in channel["owner_members"]: #user is owner of channel if members["u_id"] == u_id: channel["messages"].remove(message) return {} if getUserPerm(u_id) == 2 or getUserPerm(u_id) == 1: channel["messages"].remove(message) return {} raise AccessError("User does not have permission to remove message!") except ValueError as e: raise e except AccessError as e: raise e