UNPKG

discord-rb

Version:

Discord.rb is a library for interacting with the Discord API.

72 lines (50 loc) 1.94 kB
const Websocket = require("ws") const request = require("request") const fetch = require("node-fetch") const events = require("events") const Message = require("../events/Message.js") const User = require("../actions/User.js") const Channel = require("../actions/Channel.js") const Member = require("../actions/Member.js") const Guild = require("../actions/Guild.js") const Errors = require("../errors/Errors.js") let wss = new Websocket("wss://gateway.discord.gg/?v=6") class Client extends events.EventEmitter { constructor(options = {}) { super() } async Join(token) { this.token = token wss.on("open", ws => { let data = { "op": 2, "d": { "token": token, "properties": { "$os": "linux" } } } wss.send(JSON.stringify(data)) }) wss.on("close", ws => { if (ws === 4004) throw new Error(Errors.INVALID_TOKEN) }) wss.on("message", async data => { data = JSON.parse(data) if (data.t === "MESSAGE_CREATE") { let message = new Message() const object = await message.getData(data.d, token) this.emit("MessageCreate", object) } else if (data.t === "READY") { this.GetChannel = async (id) => await Channel(id, token) this.GetUser = async (id) => await User(id, token) this.GetMember = async (guildID, userID) => await Member(guildID, userID, token) this.GetGuild = async (id) => await Guild(id, token) this.User = await User(data.d.user.id, token) this.emit("WebsocketConnect") } }) } } module.exports = Client