Added Interaction integration

This commit is contained in:
ION606
2023-03-20 12:45:20 -04:00
parent 9faf4a315e
commit 0e33185f16
10 changed files with 286 additions and 8 deletions
+21 -1
View File
@@ -6,6 +6,7 @@ const WebSocketConnection = require('websocket').connection;
const handleResponses = require('./handleEvents.js');
const { EventEmitter } = require('events');
const axios = require('axios');
const { exit } = require('process');
@@ -43,6 +44,15 @@ class Client extends EventEmitter {
this.gwintents = input.intents;
}
async #heartbeat(hbInt, hbSequence) {
const toSend = JSON.stringify({ op: 1, d: 0 });
this.connection.send((toSend));
setInterval(() => {
this.connection.send(toSend);
}, hbInt);
}
/**
* @param {Number} hbint
*/
@@ -71,6 +81,7 @@ class Client extends EventEmitter {
};
this.connection.send(JSON.stringify(idObj));
this.#heartbeat(hbint);
}
@@ -86,6 +97,9 @@ class Client extends EventEmitter {
this.emit('error', err);
}
interactionRecieved(interaction) {
this.emit('interactionRecieved', interaction);
}
/**
* @param {String} token
@@ -101,7 +115,7 @@ class Client extends EventEmitter {
connection.on('message', async (msg) => {
const data = JSON.parse(msg.utf8Data);
const response = await handleResponses(data, token);
const response = await handleResponses(data, token, this.id);
if (response.op == 10) { this.#startHeartBeat(response.heartBeat, token); }
else if (response.op == 0) {
@@ -116,6 +130,11 @@ class Client extends EventEmitter {
this.messageRecieved(response.message);
}
}
else if (response.t == gateWayEvents.InteractionCreate) {
if (data["d"]["user"]["id"] != this.user_profile.id) {
this.interactionRecieved(response.interaction);
}
}
else console.log(response.t);
} else {
console.log(response.t);
@@ -124,6 +143,7 @@ class Client extends EventEmitter {
connection.on('close', (code, desc) => {
console.log(`CONNECTION CLOSED WITH CODE ${code}\nREASON:\n ${desc}`);
exit(1);
});
connection.on('error', (err) => {
+7 -2
View File
@@ -1,6 +1,7 @@
const { exit } = require('process');
const gateWayEvents = require('../gateway/dispatch.js');
const { message } = require('../messages/message.js');
const Interaction = require('../interactions/interaction.js');
/**
@@ -8,7 +9,7 @@ const { message } = require('../messages/message.js');
* @param {Object} msg
* @returns {Promise<Boolean>}
*/
module.exports = async function handleEvents(msgObj, token) {
module.exports = async function handleEvents(msgObj, token, id) {
return new Promise((resolve, reject) => {
const op = msgObj["op"];
const t = msgObj["t"];
@@ -17,10 +18,14 @@ module.exports = async function handleEvents(msgObj, token) {
if (op == 0 && t == gateWayEvents.Ready) {
resolve({op: op, t: t, config: msgObj["d"]["user_settings"], profile: msgObj["d"]["user"] });
} else if (t == gateWayEvents.MessageCreate) {
}
else if (t == gateWayEvents.MessageCreate) {
const msg = new message(msgObj["d"], token);
resolve({op: op, t: t, message: msg});
}
else if (t == gateWayEvents.InteractionCreate) {
resolve({op: op, t: t, interaction: new Interaction(msgObj["d"], token, id)});
}
else {
// console.log(t);