UNPKG

erium

Version:

Erium is Discord Bot Library made in typescript

138 lines (137 loc) 5.06 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const ws_1 = require("ws"); const Endpoints_1 = require("../Endpoints"); const OPCodes_1 = require("../OPCodes"); const Payload_1 = require("./Payload"); const Intents_1 = require("../structures/Intents"); const RequestHandler_1 = require("../handlers/RequestHandler"); const GatewayHandler_1 = require("../handlers/GatewayHandler"); class WebSocketCore { constructor(client, options) { this.client = client; this.requestHandler = null; let intents = 32765; if (options.disableIntents) { for (const intent of options.disableIntents) { intents -= Intents_1.Intents[intent]; } } this.intents = intents; this.disableEvents = options.disableEvents; this.presence = options.presence; this.gateway = new GatewayHandler_1.GatewayHandler(client); // @ts-ignore this.requestHandler = new RequestHandler_1.RequestHandler(client); } async login(token) { try { this.socket = new ws_1.WebSocket(Endpoints_1.Endpoints.BASE_URL); const payload = { op: 2, d: { token: token, intents: 513, heartbeat_interval: 4, properties: { $os: "linux", $browser: "erium", $device: "erium" } } }; this.socket.on("open", () => { // @ts-ignore this.socket.send(JSON.stringify(payload)); }); this.socket.on("message", async (data) => { var _a; let payload = JSON.parse(data); const { t: event, op } = payload; switch (op) { case OPCodes_1.OPCodes.ZERO: break; case OPCodes_1.OPCodes.NINE: break; case OPCodes_1.OPCodes.TEN: const { t: event, s, op, d } = payload; const { heartbeat_interval } = d; this.interval = this.heartbeat(heartbeat_interval); await this.identify(token); break; case OPCodes_1.OPCodes.ELEVEN: break; } if (event) { try { const { default: module } = await (_a = `../events/${event}_EVENT`, Promise.resolve().then(() => __importStar(require(_a)))); module(this.client, payload); // console.log(`Current Event: ${event}`); } catch (err) { console.log(err); } } }); } catch (err) { console.log(err); } } setPresence(presence) { if (!presence) presence = this.presence; if (!presence) return; this.gateway.updatePresence(presence); } get ping() { return this.gateway.latency; } heartbeat(ms) { return setInterval(() => { // @ts-ignore this.socket.send(JSON.stringify(Payload_1.Heartbeat)); }, ms); } async identify(token) { return { op: 2, d: { token, properties: { $os: "linux", $browser: "erium", $device: "erium" } }, compress: false, intents: this.intents, presence: this.presence }; } } exports.default = WebSocketCore;