code: def handle_issue_comment(self, command, payload):
      repo = self.github.get_repo(
          payload["repository"]["id"], lazy=True
      )
      issue = repo.get_issue(payload["issue"]["number"])
  
      try:
          pull = issue.as_pull_request()
      except github.GithubException:
          return issue.create_comment(
              "The comment bot only listens to pull request comments!"
          )
  
      comment = pull.get_issue_comment(payload["comment"]["id"])
      try:
          # Only allow users of apache org to submit commands, for more see
          # https://developer.github.com/v4/enum/commentauthorassociation/
          # Checking  privileges here enables the bot to respond
          # without relying on the handler.
          allowed_roles = {"OWNER", "MEMBER", "COLLABORATOR"}
          if (
              payload["comment"]["author_association"]
              not in allowed_roles
          ):
              raise EventError(
                  "Only contributors can submit requests to this bot. "
                  "Please ask someone from the community for help with "
                  "getting the first commit in."
              )
          self.handler(
              command, issue=issue, pull_request=pull, comment=comment
          )
      except Exception as e:
          logger.exception(e)
          url = "{server}/{repo}/actions/runs/{run_id}".format(
              server=os.environ["GITHUB_SERVER_URL"],
              repo=os.environ["GITHUB_REPOSITORY"],
              run_id=os.environ["GITHUB_RUN_ID"],
          )
          pull.create_issue_comment(
              f"```\n{e}\nThe Archery job run can be found at: {url}\n```"
          )
          comment.create_reaction("-1")
      else:
          comment.create_reaction("+1")
  
imports: import enum
  import os
  import shlex
  from pathlib import Path
  from functools import lru_cache, partial
  import tempfile
  import click
  import github
  from .utils.git import git
  from .utils.logger import logger
  from .crossbow import Repo, Queue, Config, Target, Job, CommentReport
label_desc: Use image node_id 4 for calling the CommentBot obj's underlying member method code with example usage: obj.handle_issue_comment(command, payload) and returns: issue