Season the chicken breasts with salt and pepper.
In a medium bowl, mix the milk, hot sauce, paprika, garlic powder, and onion powder. Add the chicken to the milk mixture, ensuring it is fully submerged. Cover the bowl and refrigerate for at least 30 minutes or up to overnight.
In a shallow bowl, combine the flour, paprika, garlic powder, onion powder, salt, and pepper.
Remove one piece of chicken at a time from the marinade. Dredge the chicken in the flour mixture, pressing gently to ensure it is fully coated. For a thicker breading and crispy coating, dip the chicken back into the marinade and dredge it in the flour again. Repeat for all the pieces of chicken.
Heat oil in a large skillet or deep fryer over medium heat until it reaches 350 degrees F (175 degrees C), or until a small drop of flour sizzles when added. Carefully place the chicken in the hot oil, frying for 3–4 minutes per side, or until golden brown and cooked through (the internal temperature should reach 165 degrees F/74 degrees C). Transfer the cooked chicken to a cooling rack or plate lined with paper towels to drain excess oil.
In a small saucepan, melt the butter over medium heat. Stir in the flour and cook for 1 minute to form a roux. Gradually whisk in the milk, stirring constantly to avoid lumps. Cook until the gravy thickens, about 3–5 minutes. Season with salt and pepper to taste.