As the title suggests, a event linked to BadgeService, which fired when a user earns a badge for the first time (NOT when ::AwardBadge is called) would be quite nice.
Example:
game:GetService("BadgeService").BadgeAwarded:connect(function(UserID,BadgeID)
print("User " .. UserID .. " has just earned the badge " .. BadgeID)
end)
This exists, but there’s no way to access it since it’s protected for some reason. And I have no clue if it fires each time :AwardBadge is called or only when it’s first awarded.
From what I’ve read a lot of useful functions are protected because at the time they were added the admins couldn’t see a reason developers would want it.
In this case you could use the event in question to announce to the other players that they got the badge, but at the time it was already done. You can also do that via the code that awards the badge which IMO makes me sense.