discord-vatron
Version:
Módulo para facilitar la interacción con la API de Discord
72 lines (62 loc) • 1.71 kB
JavaScript
const WebSocket = require('ws');
const request = require('request-promise-native');
const gateway = require('./gateway.js');
module.exports = async(bot, token) => {
const promesa = new Promise(async(resolve, reject) => {
const gw = await gateway(token)
.then((u) => {
resolve(u);
})
.catch((e) => {
reject(e);
});
});
bot.token = token;
const socket = new WebSocket(await promesa);
socket.onmessage = (msg) => {
const datos = JSON.parse(msg.data);
const opc = {
'0': () => evento(datos, bot, socket),
'10': () => heartbeat(datos, bot, socket)
};
opc[datos.op] ? opc[datos.op]() : null;
}
socket.onerror = (error) => {
console.error('[DISCORD-VATRON] ' + error.message);
bot.emit('error', error);
}
return promesa;
}
function heartbeat(datos, bot, socket) {
const intervalo = datos.d.heartbeat_interval;
setInterval(() => {
socket.send(JSON.stringify({
op: 1,
d: datos.s
}));
}, intervalo);
socket.send(JSON.stringify({
op: 2,
d: {
token: bot.token,
intents: bot.intents,
properties: {
$os: 'windows',
$browser: 'Chrome',
$device: 'Android'
},
presence: {
status: 'online',
game: {
name: '',
type: 1
},
since: new Date().valueOf(),
afk: false
}
}
}));
}
function evento(datos, bot, socket) {
bot._evento(datos, socket);
}