Added rudimentary voice joining

This commit is contained in:
hydrabolt
2015-11-06 21:26:36 +00:00
parent bd0228bc71
commit cb5452f072
4 changed files with 131 additions and 2 deletions

View File

@@ -22,7 +22,8 @@ var User = require("../Structures/User.js"),
Server = require("../Structures/Server.js"),
Message = require("../Structures/Message.js"),
Role = require("../Structures/Role.js"),
Invite = require("../Structures/Invite.js");
Invite = require("../Structures/Invite.js"),
VoiceConnection = require("../Voice/VoiceConnection.js");
var zlib;
@@ -47,6 +48,62 @@ var InternalClient = (function () {
this.resolver = new Resolver(this);
}
//def joinVoiceChannel()
InternalClient.prototype.joinVoiceChannel = function joinVoiceChannel(chann) {
var self = this;
return new Promise(function (resolve, reject) {
var channel = self.resolver.resolveVoiceChannel(chann);
if (channel) {
if (self.voiceConnections[channel]) {
self.voiceConnections[channel] = {};
var session,
token,
serverID,
endpoint,
fired = 0;
var check = function 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++;
}
if (fired >= 2) {
self.websocket.removeListener('message', check);
}
};
self.websocket.on("message", check);
self.sendWS({
op: 4,
d: {
"guild_id": serverID,
"channel_id": channel.id,
"self_mute": false,
"self_deaf": false
}
});
} else {
reject(new Error("voice channel connection exists"));
}
} else {
reject(new Error("voice channel does not exist"));
}
});
};
// def createServer
InternalClient.prototype.createServer = function createServer(name) {

View File

@@ -116,6 +116,14 @@ var Resolver = (function () {
return found;
};
Resolver.prototype.resolveVoiceChannel = function resolveVoiceChannel(resource) {
// resolveChannel will also work but this is more apt
if (resource instanceof VoiceChannel) {
return resource;
}
return null;
};
Resolver.prototype.resolveChannel = function resolveChannel(resource) {
/*
accepts a Message, Channel, Server, String ID, User