https://developer.roblox.com/api-reference/class/BadgeService
Excerpt:
You can also check if a player already earned a badge using
AwardBadge
.
AwardBadge is not used to check if a player owns a badge, UserHasBadgeAsync is.
That being said, while the correction is still up in the air to be made, I feel like including that or the paragraph above it would make its presence redundant. It would be in the mentions of asynchronous calls on the third paragraph, then once again explaining its function on the fourth.
Current content excerpt:
While theoretically you can check if a user owns a badge from AwardBadge’s return value, that wouldn’t be good practice. Users who don’t own the badge would then receive the badge and there are several other conditions which can result in AwardBadge returning false (unsuccessfully awarded) besides already owning the badge.