UNPKG

discord-vatron

Version:

Módulo para facilitar la interacción con la API de Discord

72 lines (62 loc) 1.71 kB
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); }