discord-rb
Version:
Discord.rb is a library for interacting with the Discord API.
72 lines (50 loc) • 1.94 kB
JavaScript
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