#javascript #node.js #websocket #discord #heartbeat
Вопрос:
У меня проблема, когда я запускаю своего бота, все команды работают, но когда я отправляю первое сердцебиение, Discord Api больше не отправляет мне события. Мой код:
botToken = token;
const ws = new WebSocket("wss://gateway.discord.gg/?v=6amp;encoding=json");
let interval = 0;
let session_id;
let last_seq;
let payload = {
op: 2,
d: {
token: botToken,
intents: 32767,
properties: {
$os: "linux",
$browser: "chrome",
$device: "chrome",
},
},
};
ws.on("open", function open() {
ws.send(JSON.stringify(payload));
});
ws.on("message", function incoming(data) {
let response = JSON.parse(data);
const { t, event, op, d, s } = response;
last_seq = s;
switch (op) {
case 10:
const { heartbeat_interval } = d;
interval = heartbeat(heartbeat_interval);
break;
case 7:
ws.send(JSON.stringify({
op: 6,
d: {
token: botToken,
session_id: session_id,
last_seq: s
}
}))
break;
}
if(t == "READY") {
session_id = d.session_id;
console.log("session id: " session_id)
}
let eventName = t "Callback";
console.log(t)
if(callbacks[eventName]) {
if (typeof callbacks[eventName] == "function") {
callbacks[eventName](d);
}
}
});
const heartbeat = (ms) => {
return setInterval(() => {
console.log("heartbeat sended")
ws.send(JSON.stringify({ op: 3, d: last_seq }));
}, ms);
};
Вывод на консоль:
Как вы можете видеть, после «отправлено сердцебиение» я больше не получаю события. В чем проблема?
Заранее спасибо и извините за плохой английский!