mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 19:13:31 +01:00
Added rudimentary voice joining
This commit is contained in:
@@ -22,7 +22,8 @@ var User = require("../Structures/User.js"),
|
|||||||
Server = require("../Structures/Server.js"),
|
Server = require("../Structures/Server.js"),
|
||||||
Message = require("../Structures/Message.js"),
|
Message = require("../Structures/Message.js"),
|
||||||
Role = require("../Structures/Role.js"),
|
Role = require("../Structures/Role.js"),
|
||||||
Invite = require("../Structures/Invite.js");
|
Invite = require("../Structures/Invite.js"),
|
||||||
|
VoiceConnection = require("../Voice/VoiceConnection.js");
|
||||||
|
|
||||||
var zlib;
|
var zlib;
|
||||||
|
|
||||||
@@ -47,6 +48,62 @@ var InternalClient = (function () {
|
|||||||
this.resolver = new Resolver(this);
|
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
|
// def createServer
|
||||||
|
|
||||||
InternalClient.prototype.createServer = function createServer(name) {
|
InternalClient.prototype.createServer = function createServer(name) {
|
||||||
|
|||||||
@@ -116,6 +116,14 @@ var Resolver = (function () {
|
|||||||
return found;
|
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) {
|
Resolver.prototype.resolveChannel = function resolveChannel(resource) {
|
||||||
/*
|
/*
|
||||||
accepts a Message, Channel, Server, String ID, User
|
accepts a Message, Channel, Server, String ID, User
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ var User = require("../Structures/User.js"),
|
|||||||
Server = require("../Structures/Server.js"),
|
Server = require("../Structures/Server.js"),
|
||||||
Message = require("../Structures/Message.js"),
|
Message = require("../Structures/Message.js"),
|
||||||
Role = require("../Structures/Role.js"),
|
Role = require("../Structures/Role.js"),
|
||||||
Invite = require("../Structures/Invite.js");
|
Invite = require("../Structures/Invite.js"),
|
||||||
|
VoiceConnection = require("../Voice/VoiceConnection.js");
|
||||||
|
|
||||||
var zlib;
|
var zlib;
|
||||||
|
|
||||||
@@ -42,6 +43,61 @@ class InternalClient {
|
|||||||
this.voiceConnections = new Cache();
|
this.voiceConnections = new Cache();
|
||||||
this.resolver = new Resolver(this);
|
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
|
// def createServer
|
||||||
createServer(name, region = "london") {
|
createServer(name, region = "london") {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|||||||
@@ -98,6 +98,14 @@ class Resolver {
|
|||||||
|
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolveVoiceChannel(resource) {
|
||||||
|
// resolveChannel will also work but this is more apt
|
||||||
|
if(resource instanceof VoiceChannel){
|
||||||
|
return resource;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
resolveChannel(resource) {
|
resolveChannel(resource) {
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user