Sorry for the late reply, In case you haven't figured it out yet.
library(tidyverse)
example <- tribble(
~team_name, ~X, ~Y, ~team_colour, ~team_colour2,
"red team", 1, 4, "#CC3A00", "#1E07C5",
"blue team", 2, 6, "#1E07C5", "#FFFFFF",
"green team", 3, 8, "#0AC247", "#CC3A00"
)
ggplot(example, aes(X, Y)) +
geom_point(aes(colour = team_colour, fill = team_colour2), shape = 21) +
scale_color_identity("Team",
labels = example$team_name,
breaks = example$team_colour,
guide = "legend") +
scale_fill_identity("Team",
labels = example$team_name,
breaks = example$team_colour2,
guide = "legend")

Created on 2020-10-29 by the reprex package (v0.3.0.9001)