API DOCS | WebSockets - NEW
Важно! Мы были вынуждены изменить получение данных по сокетам для стабильной работы в панели, извиняемся за неудобства.
В данный момент новые сокеты уже работают, а старые перестали работать после 21.02.25 00:00.
Важно! Для того, чтобы бот работал необходимо скинуть IP-адрес сервера администраторам - https://t.me/gamblerworkmain / https://t.me/lord_gamb
Новые сокеты
URL: wss://gambler-panel.com/api/ws?token=:token&connectionType=:cType
:token - "Worker $authToken"
:cType - "bot"
Новый формат сообщений:
{
"name": "имя_события",
"data": {
/* содержание события,
идентично тому что было раньше (API Docs | Socket.io) */
}
}
Содержание события newDeposit
{
id: "7225647136791068672", // id депозита
mammothId: "7225647165131980801", // id мамонта
mammothLogin: "[email protected]",
mammothCountry: "US", // alpha-2 код страны
mammothPromo: "superpromo", // промокод активированный на время депозита
token: "btc", // токен депозита
amount: 1, // сумма депозита в токене
amountUsd: 60709.10, // сумма депозита в USD
workerPercent: 60, // процент воркера на момент депозита
domain: "example.com", // домен воркера
txHash: "0000000003d0fbe4a8ec..." // хеш транзакции
}
/*
Список токенов:
btc, ltc, xrp, trx_trc20, usdt_trc20, eth_erc20, usdt_erc20, eth_base, usdc_base, usdc_erc20, usdc_bep20, bnb_bep20, usdt_bep20, ton_ton, usdt_ton, sol_sol, usdt_sol, usdc_sol
*/
Содержание события newDrain
{
info: {
mammothId: "id мамонта",
mammothPromo: "promo мамонта",
domain: "домен мамонта",
network: "сеть если выбрано private key, any если выбрано phrase"
},
balances: [{
token: "токен баланса с указанием сети", // например eth_erc20, usdt_trc20
usd: "баланс в $"
}] // массив со всеми балансами
}
Содержание события newMessage
{
id: "7225647136791068672", // id сообщения
mammothId: "7225647165131980801", // id мамонта
text: "текст сообщения", // отсутствует если есть picture
picture: "название файла с изображением", // отсутствует если есть text
side: "mammoth", // отправитель (mammoth или worker)
login: "[email protected]",
country: "US",
domain: "example.com",
promo: "superpromo",
createdAt: "2024-08-24T23:10:38.353Z"
}
Раз в 5 секунд приходит событие {"name":"ping","data":{}}
На него необходимо моментально отвечать {"name":"pong"}
Вы также можете использовать это для обнаружения "мертвых" соединений. Если в течении 10-и секунд от последнего ping не пришёл еще один ping, значит подключение 100% мертво.
Примеры реализации:
JavaScript
const token = encodeURIComponent("Worker 123123123");
let ws = null;
function connectToWS() {
ws = new WebSocket(`wss://gambler-panel.com/api/ws?token=${token}&connectionType=bot`);
let diedTimeout = null;
let connectTimeout = null;
let setDiedTimeout = (time = 10000) => {
if(diedTimeout) clearTimeout(diedTimeout);
if(connectTimeout) clearTimeout(connectTimeout);
diedTimeout = setTimeout(() => {
ws.close();
ws.onclose();
}, time);
}
setDiedTimeout(20000);
ws.onmessage = msg => {
try {
let data = JSON.parse(msg.data);
if(data.name === "ping") {
setDiedTimeout();
ws.send(JSON.stringify({ name: "pong" }));
}
else {
//Ваша обработка остальных ивентов
}
} catch { }
}
ws.onclose = () => {
if(diedTimeout) clearTimeout(diedTimeout);
if(connectTimeout) clearTimeout(connectTimeout);
connectTimeout = setTimeout(connectToWS, 5000);
}
}
Node.js ws module
const WebSocket = require("ws");
const token = encodeURIComponent("Worker 123123123");
let ws = null;
function connectToWS() {
ws = new WebSocket(`wss://gambler-panel.com/api/ws?token=${token}&connectionType=bot`);
let diedTimeout = null;
let connectTimeout = null;
let setDiedTimeout = (time = 10000) => {
if(diedTimeout) clearTimeout(diedTimeout);
if(connectTimeout) clearTimeout(connectTimeout);
diedTimeout = setTimeout(() => {
ws.close();
ws.emitClose();
}, time);
}
setDiedTimeout(20000);
ws.on('message', msg => {
try {
let data = JSON.parse(msg.toString('utf8'));
if(data.name === "ping") {
setDiedTimeout();
ws.send(JSON.stringify({ name: "pong" }));
}
else {
//Ваша обработка остальных ивентов
}
} catch { }
});
ws.on('close', () => {
if(diedTimeout) clearTimeout(diedTimeout);
if(connectTimeout) clearTimeout(connectTimeout);
connectTimeout = setTimeout(connectToWS, 5000);
});
}
Last updated