def METHOD_NAME(self, slack_request: SlackDMRequest) -> Response:
    if slack_request.channel_name == DIRECT_MESSAGE_CHANNEL_NAME:
        return self.reply(slack_request, LINK_FROM_CHANNEL_MESSAGE)
    identity_user = slack_request.get_identity_user()
    if not identity_user:
        return self.reply(slack_request, LINK_USER_FIRST_MESSAGE)
    integration = slack_request.integration
    organization_memberships = OrganizationMember.objects.get_for_integration(
        integration, identity_user
    )
    has_valid_role = False
    for organization_memberships in organization_memberships:
        if is_team_linked_to_channel(organization_memberships.organization, slack_request):
            return self.reply(slack_request, CHANNEL_ALREADY_LINKED_MESSAGE)
        if is_valid_role(organization_memberships):
            has_valid_role = True
    if not has_valid_role:
        return self.reply(slack_request, INSUFFICIENT_ROLE_MESSAGE)
    associate_url = build_team_linking_url(
        integration=integration,
        slack_id=slack_request.user_id,
        channel_id=slack_request.channel_id,
        channel_name=slack_request.channel_name,
        response_url=slack_request.response_url,
    )
    return self.reply(slack_request, LINK_TEAM_MESSAGE.format(associate_url=associate_url))