Интегрируйте систему голосования MMOGTOP.GG в ваш проект. Наше API позволяет проверять голоса игроков и автоматически начислять награды.
Базовый URL API: https://mmogtop.gg/api/v1
Для доступа к API требуется токен, который вы можете получить в панели управления вашим сервером.
/votes/by-token
Этот endpoint объединяет функциональность проверки голоса и получения списка голосов. Использует токен сервера для авторизации.
Параметры запроса:
server_token - Ваш токен сервера (обязательно)character - Имя персонажа (опционально). Если передан - проверяет конкретный голосperiod - Период для фильтрации (today, yesterday, week, month, all). По умолчанию: allpage - Номер страницы для пагинации. По умолчанию: 1per_page - Количество записей на страницу (максимум 100). По умолчанию: 50Логика работы:
/servers/{server}/votes
Этот endpoint требует аутентификации через Sanctum и доступен только владельцу сервера или администратору.
Параметры запроса:
period - Период для фильтрации (today, yesterday, week, month, all). По умолчанию: todaypage - Номер страницы для пагинации. По умолчанию: 1per_page - Количество записей на страницу (максимум 100). По умолчанию: 50Пример ответа:
{
"data": [
{
"id": 123,
"user_id": 456,
"server_id": 789,
"character_name": "PlayerName",
"voted_at": "2024-01-20T15:30:00Z"
},
// ...другие голоса
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 50,
"total": 250
}
}
$token = 'ваш_токен';
$character = 'имя_персонажа';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://mmogtop.gg/api/v1/votes/by-token?server_token={$token}&character={$character}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['success']) {
// Игрок проголосовал
$votedAt = $data['voted_at'];
// Начислить награду
}
const checkVote = async (token, character) => {
try {
const response = await fetch(`https://mmogtop.gg/api/v1/votes/by-token?server_token=${token}&character=${character}`);
const data = await response.json();
if (data.success) {
// Игрок проголосовал
console.log('Voted at:', data.voted_at);
// Начислить награду
}
} catch (error) {
console.error('Error checking vote:', error);
}
};
use Illuminate\Support\Facades\Http;
public function checkVote(string $character)
{
try {
$response = Http::get('https://mmogtop.gg/api/v1/votes/by-token', [
'server_token' => config('services.mmoanons.server_token'),
'character' => $character,
]);
if ($response->successful() && $response->json('success')) {
// Игрок проголосовал
$votedAt = $response->json('voted_at');
// Начислить награду
return true;
}
return false;
} catch (\Exception $e) {
Log::error('Vote check failed: ' . $e->getMessage());
return false;
}
}
use Illuminate\Support\Facades\Http;
public function getVotesByToken(string $period = 'today')
{
try {
$response = Http::get('https://mmogtop.gg/api/v1/votes/by-token', [
'server_token' => config('services.mmoanons.server_token'),
'period' => $period,
'page' => 1,
'per_page' => 50,
]);
if ($response->successful() && $response->json('success')) {
$votes = $response->json('data');
$meta = $response->json('meta');
// Обработка списка голосов
foreach ($votes as $vote) {
$characterName = $vote['character_name'];
$votedAt = $vote['voted_at'];
// Начислить награду, если еще не начислена
}
return [
'votes' => $votes,
'meta' => $meta
];
}
return [];
} catch (\Exception $e) {
Log::error('Get votes by token failed: ' . $e->getMessage());
return [];
}
}
use Illuminate\Support\Facades\Http;
public function getVotes(string $period = 'today')
{
try {
$response = Http::withToken('ваш_api_токен')
->get('https://mmogtop.gg/api/v1/servers/{server_id}/votes', [
'period' => $period,
'page' => 1,
'per_page' => 50,
]);
if ($response->successful()) {
$votes = $response->json('data');
// Обработка списка голосов
foreach ($votes as $vote) {
// Обработка каждого голоса
$characterName = $vote['character_name'];
$votedAt = $vote['voted_at'];
// Начислить награду, если еще не начислена
}
return $votes;
}
return [];
} catch (\Exception $e) {
Log::error('Get votes failed: ' . $e->getMessage());
return [];
}
}
Успешный ответ:
{
"success": true,
"voted_at": "2024-01-20T15:30:00Z",
"character": "PlayerName",
"server_id": 123
}
Ответ при отсутствии голоса:
{
"success": false,
"message": "No vote found for this character"
}
Успешный ответ:
{
"success": true,
"data": [
{
"id": 123,
"user_id": 456,
"server_id": 789,
"character_name": "PlayerName",
"server_name": "Baza",
"voted_at": "2024-01-20T15:30:00Z",
"created_at": "2024-01-20T15:30:00Z"
}
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 50,
"total": 250,
"server_info": {
"id": 789,
"name": "Baza",
"game": "World of Warcraft"
}
}
}
Для автоматического начисления наград игрокам, проголосовавшим за ваш сервер, рекомендуем следующий подход:
Такой подход позволит автоматически обрабатывать голоса даже если игрок не заходит на сервер сразу после голосования.
Если у вас возникли вопросы по интеграции API, обратитесь в нашу службу поддержки.