diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 5178c1bef..556fa336e 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -57,13 +57,13 @@ var InternalClient = (function () { var channel = self.resolver.resolveVoiceChannel(chann); if (channel) { - if (self.voiceConnections[channel]) { + if (!self.voiceConnections[channel]) { self.voiceConnections[channel] = {}; var session, token, - serverID, + server = channel.server, endpoint, fired = 0; @@ -72,14 +72,12 @@ var InternalClient = (function () { if (data.t === "VOICE_STATE_UPDATE") { session = data.d.session_id; - fired++; } else if (data.t === "VOICE_SERVER_UPDATE") { token = data.d.token; - serverID = data.d.guild_id; endpoint = data.d.endpoint; - fired++; - } + self.voiceConnections[channel] = new VoiceConnection(channel, self.client, session, token, server, endpoint); + } if (fired >= 2) { self.websocket.removeListener('message', check); } @@ -89,7 +87,7 @@ var InternalClient = (function () { self.sendWS({ op: 4, d: { - "guild_id": serverID, + "guild_id": server.id, "channel_id": channel.id, "self_mute": false, "self_deaf": false diff --git a/lib/Voice/VoiceConnection.js b/lib/Voice/VoiceConnection.js index 19ac044dd..2437d9551 100644 --- a/lib/Voice/VoiceConnection.js +++ b/lib/Voice/VoiceConnection.js @@ -2,8 +2,19 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var VoiceConnection = function VoiceConnection() { +var WebSocket = require("ws"); +var dgram = require("dgram"); + +var VoiceConnection = function VoiceConnection(channel, client, session, token, server, endpoint) { _classCallCheck(this, VoiceConnection); + + this.voiceChannel = channel; + this.client = client; + this.session = session; + this.token = token; + this.server = server; + this.endpoint = endpoint; + console.log("I was instantiated!"); }; module.exports = VoiceConnection; \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 2c2c1a317..745969e80 100644 --- a/lib/index.js +++ b/lib/index.js @@ -4,6 +4,8 @@ module.exports = { Client: require("./Client/Client.js") }; +var VoiceChannel = require("./Structures/VoiceChannel.js"); + var a = new module.exports.Client(); a.on("debug", function (m) { return console.log("[debug]", m); @@ -14,38 +16,30 @@ a.on("warn", function (m) { var start = Date.now(); a.on("message", function (m) { if (m.content === "$$$") { - a.internal.setTopic(m.channel, "a channel topic!"); - } -}); -a.on("userTypingStart", function (user, chan) { - console.log(user.username + " typing"); -}); -a.on("userTypingStop", function (user, chan) { - console.log(user.username + " stopped typing"); -}); -a.on("ready", function () { - for (var _iterator = a.internal.servers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; + for (var _iterator = m.channel.server.channels, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } - var server = _ref; + var channel = _ref; - if (server.name === "craptown") { - a.leaveServer(server); + if (channel instanceof VoiceChannel) { + a.internal.joinVoiceChannel(channel)["catch"](error); + break; + } } } }); function error(e) { - throw e; + console.log(e); process.exit(0); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 6d262aa31..15b69bd49 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -52,25 +52,24 @@ class InternalClient { var channel = self.resolver.resolveVoiceChannel(chann); if(channel){ - if(self.voiceConnections[channel]){ + if(!self.voiceConnections[channel]){ self.voiceConnections[channel] = {}; - var session, token, serverID, endpoint, fired = 0; + var session, token, server = channel.server, endpoint, fired = 0; var check = (m) => { var data = JSON.parse(m); if(data.t === "VOICE_STATE_UPDATE"){ session = data.d.session_id; - fired++; }else if(data.t === "VOICE_SERVER_UPDATE"){ token = data.d.token; - serverID = data.d.guild_id; endpoint = data.d.endpoint; - fired++; + + self.voiceConnections[channel] = new VoiceConnection(channel, self.client, session, token, server, endpoint); + } - if(fired >= 2){ self.websocket.removeListener('message', check); } @@ -81,7 +80,7 @@ class InternalClient { self.sendWS({ op : 4, d : { - "guild_id" : serverID, + "guild_id" : server.id, "channel_id" : channel.id, "self_mute" : false, "self_deaf" : false diff --git a/src/Voice/VoiceConnection.js b/src/Voice/VoiceConnection.js index bb2450d53..8c9a46323 100644 --- a/src/Voice/VoiceConnection.js +++ b/src/Voice/VoiceConnection.js @@ -1,8 +1,17 @@ "use strict"; +var WebSocket = require("ws"); +var dgram = require("dgram"); + class VoiceConnection{ - constructor(){ - + constructor(channel, client, session, token, server, endpoint){ + this.voiceChannel = channel; + this.client = client; + this.session = session; + this.token = token; + this.server = server; + this.endpoint = endpoint; + console.log("I was instantiated!"); } } diff --git a/src/index.js b/src/index.js index 446644412..87e136ea5 100644 --- a/src/index.js +++ b/src/index.js @@ -2,31 +2,25 @@ module.exports = { Client : require("./Client/Client.js") } +var VoiceChannel = require("./Structures/VoiceChannel.js"); + var a = new module.exports.Client(); a.on("debug", (m) => console.log("[debug]",m)); a.on("warn", (m) => console.log("[warn]", m)); var start = Date.now(); a.on("message", m => { if(m.content === "$$$"){ - a.internal.setTopic(m.channel, "a channel topic!"); - } -}); -a.on("userTypingStart", (user, chan) => { - console.log(user.username + " typing"); -}); -a.on("userTypingStop", (user, chan) => { - console.log(user.username + " stopped typing"); -}); -a.on("ready", () => { - for(var server of a.internal.servers){ - if(server.name === "craptown"){ - a.leaveServer(server); + for(var channel of m.channel.server.channels){ + if(channel instanceof VoiceChannel){ + a.internal.joinVoiceChannel(channel).catch(error); + break; + } } } }); function error(e){ - throw e; + console.log(e); process.exit(0); }