Welcome, today we are going to talk about badge service, a service which, from the name, you can guess is about badges.
BadgeService is a service which has all to do with badges, with 3 functions to help you with handling badges in general, before you continue, you have to own the badge for you to be able to award it. You can create 5 badges daily for free, any more cost 100 robux (If in a group, roblox uses your group funds)
You are going to need your badge's id to use the following functions im about to talk about, BadgeService's functions have web calls, so they may error, meaning you should probably use pcalls for these(if you dont know what pcalls are, there's a great tutorial on lua learning for it), if you dont know how to get your badge's id, it is the random numbers in the badge link after "badges/", without further ado, lets get right into it!
The function name is self-explanatory, its a function for awarding a badge to the player. You specify first the player's user id for the function to know what player to give the badge to, followed by the badge id so the function knows what badge to award to said player(this function will not error if the player already has said badge and it will also return a boolean reprensenting if the badge has been awarded succesfully or not). A few criteria have to be met first before the player can get the badge awarded succesfully:
The player must be connected to the current server for the badge to be awarded successfully
The badge must be awarded inside the server, meaning only Scripts or ModuleScripts
required by Scripts can award badges
The badge must be awarded in a place that is part of the game associated with the badge
The badge must be enabled to be awarded.
Example:
BadgeService:AwardBadge(Player.UserId, myBadgeId)
Name is also self explanatory, returns a bool representing whether or not the player with the specified userId has the badge with the id of badgeId. The badge does not need to be owned by the place's owner or the place, it can be used for any badge inside any game. This function also needs to be ran server sided. Example:
--This code would check whether the player has a badge, and if they do, print something
if BadgeService:UserHasBadgeAsync(Player.UserId, aBadgeId) then
print("User has the badge with id " .. aBadgeID)
end
Also has a self-explanatory name, gets info about the badge with the id of badgeId(the badge does not need to be owned by place's owner or the place). It returns a dictionary with the following:
Name: It is a string and is the name of the badge.
Description: Is a string, which contains the description of said badge.
IconImageId: Is an integer, describes the badge's icon id.
IsEnabled: It is a bool, which tells you if the badge is enabled or not to be awarded.
Example:
local badgeInfo = BadgeService:GetBadgeInfoAsync(aBadgeId)
print("The badge has the name of " .. badgeInfo.Name .. "with the following description: " .. badgeInfo.Description .. ", it also has the icon id of " .. tostring(badgeInfo.IconImageId) .. ". Badge is available to award:" .. tostring(badgeInfo.IsEnabled))
Thanks for reading my tutorial, hopefully you learned something from it.