def can_edit_content_or_topic( message: Message, user_profile: UserProfile, is_no_topic_msg: bool, content: Optional[str] = None, topic_name: Optional[str] = None, ) -> bool: # You have permission to edit the message (both content and topic) if you sent it. if message.sender_id == user_profile.id: return True # You cannot edit the content of message sent by someone else. if content is not None: return False assert topic_name is not None # The following cases are the various reasons a user might be # allowed to edit topics. # We allow anyone to edit (no topic) messages to help tend them. if is_no_topic_msg: return True # The can_edit_topic_of_any_message helper returns whether the user can edit the topic # or not based on edit_topic_policy setting and the user's role. if user_profile.can_edit_topic_of_any_message(): return True return False