<?php
// vote-webhook.php
// 1. Récupérer le contenu brut POST
$jsonData = file_get_contents('php://input');
// 2. Décoder le JSON
$payload = json_decode($jsonData, true);
if ($payload && isset($payload['event']) && $payload['event'] === 'vote') {
$voter = $payload['voter'];
// Pseudo de l'oauth lié (ex: pseudo Minecraft) ou pseudo saisi manuellement
$playerName = $voter['oauth_username'] ?? $voter['optional_pseudo'];
$uuid = $voter['oauth_userid']; // ex: UUID Minecraft si disponible
if ($playerName) {
// CODE : Récompenser le joueur $playerName (ex: RCON commande vers Minecraft)
// file_put_contents('votes.log', "Vote enregistré pour {$playerName}\n", FILE_APPEND);
http_response_code(200);
echo json_encode(["status" => "success", "message" => "Reward delivered to " . $playerName]);
exit;
}
}
http_response_code(400);
echo json_encode(["status" => "error", "message" => "Invalid Payload"]);
exit;
const express = require('express');
const app = express();
app.use(express.json());
app.post('/api/vote-webhook', (req, res) => {
const payload = req.body;
if (payload && payload.event === 'vote') {
const voter = payload.voter;
// Priorité au pseudo vérifié par OAuth, sinon pseudo saisi lors du vote
const playerName = voter.oauth_username || voter.optional_pseudo;
if (playerName) {
console.log(`Nouveau vote de ${playerName} !`);
// CODE : Exécuter des scripts ou requêtes RCON pour distribuer les récompenses
return res.status(200).json({ status: 'success', message: `Player ${playerName} rewarded.` });
}
}
return res.status(400).json({ status: 'error', message: 'Invalid payload' });
});
app.listen(3000, () => console.log('Webhook receiver running on port 3000'));
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/vote-webhook', methods=['POST'])
def vote_webhook():
payload = request.json
if payload and payload.get('event') == 'vote':
voter = payload.get('voter', {})
# Récupérer le pseudo du joueur
player_name = voter.get('oauth_username') or voter.get('optional_pseudo')
if player_name:
print(f"Vote détecté pour le joueur : {player_name}")
# CODE : Traiter le vote (RCON, écriture en BDD, etc.)
return jsonify({"status": "success", "message": f"Reward sent to {player_name}"}), 200
return jsonify({"status": "error", "message": "Invalid payload"}), 400
if __name__ == '__main__':
app.run(port=3000)