Votes & cooldown
Contrôle les votes par pseudo, Steam ID, Discord ID ou identifiant personnalisé avec cooldown serveur.
Documentation développeur
Tout ce qu’il faut pour connecter un serveur à TopServeur : vérifier les votes, distribuer les récompenses, suivre le statut serveur et automatiser les notifications Discord.
Base API
Version stable v1
https://topserveur.fr/api/public/v1
Contrôle les votes par pseudo, Steam ID, Discord ID ou identifiant personnalisé avec cooldown serveur.
Resource vote et boutique FiveM avec menu client, commande, keymap, config Lua et locales FR/EN.
Notifications de vote, test webhook et aperçu Discord pour valider le rendu avant production.
Statut online/offline, joueurs, slots, latence et historiques exploitables côté dashboard.
Quick start
Le flux recommandé est simple : token privé, plugin côté serveur, check de vote, puis claim de récompense.
Ajoute ton serveur depuis le dashboard, renseigne le jeu, les bannières, le Discord et les tags.
Dans l’onglet API de ton serveur, copie le server_token. Il doit rester côté serveur/plugin.
Installe le resource FiveM, ajoute le token dans ton server.cfg et démarre le script.
Vote depuis la page publique, vérifie l’API, puis consomme la récompense avec une route claim.
Le plugin interroge l’API TopServeur, détecte les nouveaux votes et déclenche un event Lua pour récompenser les joueurs.
server.cfg
ensure topserveur_vote
set topserveur_token "TOKEN"
set topserveur_api_url "https://topserveur.fr/api/public/v1"
set topserveur_check_interval 60Event reward Lua
AddEventHandler('onPlayerVote', function(playername, date)
print(('[TopServeur] %s a voté le %s'):format(playername, date))
-- Exemple :
-- giveMoney(playername, 5000)
-- giveItem(playername, 'premium_case', 1)
end)Repository officiel : https://github.com/DARKAOFF/topserveur-fivem-boutique
server.cfg boutique
ensure topserveur_boutique
# Configuration principale dans resources/topserveur_boutique/config.luaconfig.lua boutique
Config.Locale = 'fr'
Config.Command = 'boutique'
Config.KeyMapping = {
enabled = true,
key = 'F7'
}
Config.Api = {
enabled = true,
baseUrl = 'https://topserveur.fr/api/public/v1',
serverToken = 'TOKEN',
checkVoteBeforePurchase = false
}
Config.Categories = {
{ id = 'packs', label = 'Packs' },
{ id = 'vehicles', label = 'Véhicules' }
}Hook achat boutique
function Config.OnPurchase(source, item, category)
-- Branche ici ESX, QBCore, ox_inventory, garage custom, etc.
for _, reward in ipairs(item.rewards or {}) do
if reward.type == 'command' and reward.command then
ExecuteCommand(reward.command:gsub('{player}', tostring(source)))
end
end
endRéférence API
Tous les endpoints nécessitent un token serveur. Le token peut être passé en query `server_token=TOKEN` ou dans l’URL pour les routes serveur.
Retourne les derniers votes disponibles pour ton serveur.
https://topserveur.fr/api/public/v1/votes/last?server_token=TOKEN
Réponse exemple
{
"code": 200,
"success": true,
"data": [
{
"playerIdentifier": "username:Anthony",
"playerName": "Anthony",
"datetime": "2026-04-29T12:00:00.000Z"
}
]
}Indique si un joueur a déjà voté et quand il pourra voter à nouveau.
https://topserveur.fr/api/public/v1/votes/check?server_token=TOKEN&playername=PSEUDO
Réponse exemple
{
"code": 200,
"success": true,
"data": {
"voted": true,
"lastVoteAt": "2026-04-29T12:00:00.000Z",
"nextVoteAt": "2026-04-30T12:00:00.000Z"
}
}Consomme un vote validé pour éviter de donner deux fois la même récompense.
https://topserveur.fr/api/public/v1/votes/claim-username?server_token=TOKEN&playername=PSEUDO
Réponse exemple
{
"code": 200,
"success": true,
"message": "Vote reward claimed.",
"data": {
"claimed": true,
"playerName": "Anthony"
}
}Retourne l’état du serveur, les joueurs connectés et la latence.
https://topserveur.fr/api/public/v1/servers/TOKEN/status
Réponse exemple
{
"code": 200,
"success": true,
"data": {
"online": true,
"playersOnline": 54,
"maxPlayers": 300,
"latency": 42
}
}Liste les joueurs qui votent le plus pour ton serveur.
https://topserveur.fr/api/public/v1/servers/TOKEN/players-ranking
Réponse exemple
{
"code": 200,
"success": true,
"data": {
"players": [
{
"playerName": "Anthony",
"votes": 42,
"position": 1
}
]
}
}