mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 20:13:30 +01:00
Fixed awaiting
This commit is contained in:
@@ -804,6 +804,25 @@ var Client = (function (_EventEmitter) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// def awaitResponse
|
||||||
|
|
||||||
|
Client.prototype.awaitResponse = function awaitResponse(msg) {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
var callback = arguments.length <= 1 || arguments[1] === undefined ? function (e, newMsg) {} : arguments[1];
|
||||||
|
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
|
_this.internal.awaitResponse(msg).then(function (newMsg) {
|
||||||
|
resolve(newMsg);
|
||||||
|
callback(null, newMsg);
|
||||||
|
})["catch"](function (e) {
|
||||||
|
callback(e);
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
Client.prototype.setStatusIdle = function setStatusIdle() {
|
Client.prototype.setStatusIdle = function setStatusIdle() {
|
||||||
this.setStatus("idle");
|
this.setStatus("idle");
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ var InternalClient = (function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var awaitID = msg.channel.id + msg.id;
|
var awaitID = msg.channel.id + msg.author.id;
|
||||||
|
|
||||||
if (!_this.messageAwaits[awaitID]) {
|
if (!_this.messageAwaits[awaitID]) {
|
||||||
_this.messageAwaits[awaitID] = [];
|
_this.messageAwaits[awaitID] = [];
|
||||||
@@ -1274,11 +1274,11 @@ var InternalClient = (function () {
|
|||||||
if (channel) {
|
if (channel) {
|
||||||
var msg = channel.messages.add(new Message(data, channel, client));
|
var msg = channel.messages.add(new Message(data, channel, client));
|
||||||
|
|
||||||
if (self.messageAwaits[channel.id + msg.id]) {
|
if (self.messageAwaits[channel.id + msg.author.id]) {
|
||||||
self.messageAwaits[channel.id + msg.id].map(function (fn) {
|
self.messageAwaits[channel.id + msg.author.id].map(function (fn) {
|
||||||
return fn();
|
return fn(msg);
|
||||||
});
|
});
|
||||||
self.messageAwaits[channel.id + msg.id] = null;
|
self.messageAwaits[channel.id + msg.author.id] = null;
|
||||||
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
||||||
} else {
|
} else {
|
||||||
client.emit("message", msg);
|
client.emit("message", msg);
|
||||||
|
|||||||
@@ -797,6 +797,25 @@ class Client extends EventEmitter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// def awaitResponse
|
||||||
|
awaitResponse(msg, callback = function (e, newMsg) { }) {
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
this.internal.awaitResponse(msg)
|
||||||
|
.then(newMsg => {
|
||||||
|
resolve(newMsg);
|
||||||
|
callback(null, newMsg);
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
callback(e);
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
setStatusIdle() {
|
setStatusIdle() {
|
||||||
this.setStatus("idle");
|
this.setStatus("idle");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,13 +77,14 @@ class InternalClient {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var awaitID = msg.channel.id + msg.id;
|
var awaitID = msg.channel.id + msg.author.id;
|
||||||
|
|
||||||
if( !this.messageAwaits[awaitID] ){
|
if( !this.messageAwaits[awaitID] ){
|
||||||
this.messageAwaits[awaitID] = [];
|
this.messageAwaits[awaitID] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.messageAwaits[awaitID].push(resolve);
|
this.messageAwaits[awaitID].push(resolve);
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1350,9 +1351,9 @@ class InternalClient {
|
|||||||
if (channel) {
|
if (channel) {
|
||||||
var msg = channel.messages.add(new Message(data, channel, client));
|
var msg = channel.messages.add(new Message(data, channel, client));
|
||||||
|
|
||||||
if(self.messageAwaits[channel.id + msg.id]){
|
if(self.messageAwaits[channel.id + msg.author.id]){
|
||||||
self.messageAwaits[channel.id + msg.id].map( fn => fn() );
|
self.messageAwaits[channel.id + msg.author.id].map( fn => fn(msg) );
|
||||||
self.messageAwaits[channel.id + msg.id] = null;
|
self.messageAwaits[channel.id + msg.author.id] = null;
|
||||||
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
client.emit("message", msg, true); //2nd param is isAwaitedMessage
|
||||||
}else{
|
}else{
|
||||||
client.emit("message", msg);
|
client.emit("message", msg);
|
||||||
|
|||||||
@@ -23,6 +23,16 @@ client.on("message", m => {
|
|||||||
var game = m.content.split(" ").slice(1).join(" ");
|
var game = m.content.split(" ").slice(1).join(" ");
|
||||||
client.setStatus(game);
|
client.setStatus(game);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m.content === "ask me a question") {
|
||||||
|
|
||||||
|
m.reply("do you like polar bears?");
|
||||||
|
|
||||||
|
client.awaitResponse(m).then(newMsg => {
|
||||||
|
newMsg.reply("I see! you said " + newMsg.content);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user