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

View File

@@ -20,7 +20,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;
@@ -42,6 +43,61 @@ class InternalClient {
this.voiceConnections = new Cache();
this.resolver = new Resolver(this);
}
//def joinVoiceChannel()
joinVoiceChannel(chann){
var self = this;
return new Promise((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 = (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
createServer(name, region = "london") {
var self = this;

View File

@@ -98,6 +98,14 @@ class Resolver {
return found;
}
resolveVoiceChannel(resource) {
// resolveChannel will also work but this is more apt
if(resource instanceof VoiceChannel){
return resource;
}
return null;
}
resolveChannel(resource) {
/*