diff --git a/enterprise/integrations/github/github_manager.py b/enterprise/integrations/github/github_manager.py index 32ea147dec..d7989d25ca 100644 --- a/enterprise/integrations/github/github_manager.py +++ b/enterprise/integrations/github/github_manager.py @@ -145,11 +145,7 @@ class GithubManager(Manager): ).get('body', ''): return False - if GithubFactory.is_eligible_for_conversation_starter( - message - ) and self._user_has_write_access_to_repo(installation_id, repo_name, username): - await GithubFactory.trigger_conversation_starter(message) - + # Check event types before making expensive API calls (e.g., _user_has_write_access_to_repo) if not ( GithubFactory.is_labeled_issue(message) or GithubFactory.is_issue_comment(message) @@ -159,8 +155,17 @@ class GithubManager(Manager): return False logger.info(f'[GitHub] Checking permissions for {username} in {repo_name}') + user_has_write_access = self._user_has_write_access_to_repo( + installation_id, repo_name, username + ) - return self._user_has_write_access_to_repo(installation_id, repo_name, username) + if ( + GithubFactory.is_eligible_for_conversation_starter(message) + and user_has_write_access + ): + await GithubFactory.trigger_conversation_starter(message) + + return user_has_write_access async def receive_message(self, message: Message): self._confirm_incoming_source_type(message)