Added awaiting internally

This commit is contained in:
hydrabolt
2015-11-21 20:50:58 +00:00
parent 20439172c1
commit ddfed4da6c
2 changed files with 72 additions and 6 deletions

View File

@@ -44,6 +44,8 @@ class InternalClient {
this.voiceConnection = null;
this.resolver = new Resolver(this);
this.readyTime = null;
this.messageAwaits = {};
}
get uptime() {
@@ -63,6 +65,28 @@ class InternalClient {
}
});
}
//def awaitResponse
awaitResponse(msg){
return new Promise((resolve, reject) => {
msg = this.resolver.resolveMessage(msg);
if(!msg){
reject(new Error("message undefined"));
return;
}
var awaitID = msg.channel.id + msg.id;
if( !this.messageAwaits[awaitID] ){
this.messageAwaits[awaitID] = [];
}
this.messageAwaits[awaitID].push(resolve);
});
}
//def joinVoiceChannel
joinVoiceChannel(chann) {
@@ -1325,7 +1349,14 @@ class InternalClient {
var channel = self.channels.get("id", data.channel_id) || self.private_channels.get("id", data.channel_id);
if (channel) {
var msg = channel.messages.add(new Message(data, channel, client));
client.emit("message", msg);
if(self.messageAwaits[channel.id + msg.id]){
self.messageAwaits[channel.id + msg.id].map( fn => fn() );
self.messageAwaits[channel.id + msg.id] = null;
client.emit("message", msg, true); //2nd param is isAwaitedMessage
}else{
client.emit("message", msg);
}
self.ack(msg);
} else {
client.emit("warn", "message created but channel is not cached");