Документация API голосований
Подключите систему голосований к своему игровому серверу: проверяйте голоса игроков, получайте имя персонажа, игровой мир и IP-адрес и выдавайте награды автоматически.
https://mmoprime.com/api/v1
Аутентификация
Токен выдаётся в личном кабинете проекта: Мои серверы → Редактировать.
Передавайте его в параметре запроса server_token.
Методы
Универсальный метод. Если передан character — проверяет, голосовал ли персонаж за последние 24 часа. Иначе возвращает список с пагинацией.
| Параметр | Тип | Описание | |
|---|---|---|---|
server_token |
string | required | Токен вашего сервера |
character |
string | optional | Имя персонажа — проверяет конкретный голос |
world |
string | optional | Название игрового мира / реалма. Работает в обоих режимах: в списке оставляет только голоса этого реалма. |
period |
string | optional | today yesterday week month all |
page |
integer | optional | По умолчанию: 1 |
per_page |
integer | optional | Максимум 100. По умолчанию: 50 |
{
"success": true,
"voted_at": "2025-07-20T15:30:00+03:00",
"character": "Arthas",
"server_world": "Lordaeron",
"server_id": 123
}
{
"success": false,
"message": "No vote found for this character"
}
{
"success": true,
"data": [
{
"id": 1,
"character_name": "Arthas",
"server_world": "Lordaeron",
"server_name": "WoW Classic x5",
"ip_address": "192.168.1.10",
"voted_at": "2025-07-20 15:30:00"
}
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 50,
"total": 243,
"server_info": {
"id": 123,
"name": "WoW Classic x5",
"game": "World of Warcraft"
}
}
}
Поля объекта голоса
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный ID голоса |
character_name | string | Имя персонажа |
server_world | string|null | Игровой мир / реалм |
server_name | string | Название сервера |
ip_address | string | IP-адрес голосующего |
voted_at | string | Время голоса, московское (UTC+3) |
Примеры интеграции
$token = 'your_server_token';
$character = 'Arthas';
$world = 'Lordaeron'; // optional
$url = "https://mmoprime.com/api/v1/votes/by-token?"
. http_build_query([
'server_token' => $token,
'character' => $character,
'world' => $world,
]);
$data = json_decode(file_get_contents($url), true);
if ($data['success']) {
$votedAt = $data['voted_at'];
$world = $data['server_world'];
// Grant reward
}
const checkVote = async (token, character, world = null) => {
const params = new URLSearchParams({
server_token: token,
character: character,
});
if (world) params.set('world', world);
const res = await fetch(
`https://mmoprime.com/api/v1/votes/by-token?${params}`
);
const data = await res.json();
if (data.success) {
console.log('World:', data.server_world);
// Grant reward
}
};
use Illuminate\Support\Facades\Http;
public function checkVote(string $character, ?string $world = null): bool
{
$params = [
'server_token' => config('services.mmovibe.token'),
'character' => $character,
];
if ($world) $params['world'] = $world;
$response = Http::get(
'https://mmoprime.com/api/v1/votes/by-token',
$params
);
if ($response->successful() && $response->json('success')) {
// $response->json('server_world')
// Grant reward
return true;
}
return false;
}
Автоматическая выдача наград
- 1Настройте задачу cron с запуском раз в 5-15 минут
- 2Request today's votes via the API
- 3Сверяйте с локальной базой уже обработанных голосов
- 4Выдавайте награды за новые голоса и сохраняйте запись
Ежемесячный сброс голосов
Важно: Все голоса автоматически обнуляются 1-го числа каждого месяца в 00:00 по московскому времени. Счётчики сбрасываются в ноль. Обработайте все накопленные голоса до конца месяца.
Советы по интеграции
- Не опрашивайте API чаще одного раза в минуту. Жёсткий лимит — 120 запросов в минуту, дальше приходит 429.
- Храните историю наград, чтобы не выдать их дважды
- Корректно обрабатывайте сетевые ошибки и недоступность API
- Всегда используйте HTTPS
server_worldнеобязателен — используйте его, если на проекте несколько игровых миров