Added a voiceSpeaking event, fired when a user in a voiceChannel starts or stops speaking. (#452)

* Added an event for the voice speaking packet.

* Updated the docs to reflect the voiceSpeaking event addition.

* Fixed some spacing issues in the VoiceConnection.js file.

* Moved the speaking boolean to the User object.
This commit is contained in:
Jesse Bryan
2016-07-11 14:12:27 -05:00
committed by abal
parent 620d8cbf15
commit 7ae7a9aa34
6 changed files with 62 additions and 15 deletions

3
src/Structures/User.js Normal file → Executable file
View File

@@ -4,7 +4,7 @@ import Equality from "../Util/Equality";
import {Endpoints} from "../Constants";
import {reg} from "../Util/ArgumentRegulariser";
export default class User extends Equality{
export default class User extends Equality {
constructor(data, client){
super();
this.client = client;
@@ -22,6 +22,7 @@ export default class User extends Equality{
this.note = data.note || null;
this.voiceChannel = null;
this.voiceState = {};
this.speaking = false;
}
get createdAt() {

36
src/Voice/VoiceConnection.js Normal file → Executable file
View File

@@ -231,9 +231,9 @@ export default class VoiceConnection extends EventEmitter {
// options is the callback
callback = options;
}
if (typeof options !== "object") {
options = {};
}
if (typeof options !== "object") {
options = {};
}
options.volume = options.volume !== undefined ? options.volume : this.getVolume();
return new Promise((resolve, reject) => {
this.encoder
@@ -260,9 +260,9 @@ export default class VoiceConnection extends EventEmitter {
// options is the callback
callback = options;
}
if (typeof options !== "object") {
options = {};
}
if (typeof options !== "object") {
options = {};
}
options.volume = options.volume !== undefined ? options.volume : this.getVolume();
return new Promise((resolve, reject) => {
this.encoder
@@ -290,9 +290,9 @@ export default class VoiceConnection extends EventEmitter {
// volume is the callback
callback = volume;
}
if (!ffmpegOptions instanceof Array) {
ffmpegOptions = [];
}
if (!ffmpegOptions instanceof Array) {
ffmpegOptions = [];
}
var volume = volume !== undefined ? volume : this.getVolume();
return new Promise((resolve, reject) => {
this.encoder
@@ -402,6 +402,24 @@ export default class VoiceConnection extends EventEmitter {
self.mode = data.d.mode;
self.emit("ready", self);
break;
case 5:
var user = self.server.members.get("id", data.d.user_id);
if (user){
var speaking = data.d.speaking;
var channel = user.voiceChannel;
if (channel){
user.speaking = speaking;
self.client.emit("voiceSpeaking", channel, user);
} else {
self.client.emit("warn", "channel doesn't exist even though SPEAKING expects them to");
}
} else {
self.client.emit("warn", "user doesn't exist even though SPEAKING expects them to");
}
break;
}
});