From 49734124395d74e3e2faba347bc7deaff056765f Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 13:32:01 +0000 Subject: [PATCH 1/9] Added message acknowledging --- lib/Client/InternalClient.js | 24 ++++++++++++++++++++++++ src/Client/InternalClient.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index e33f14203..a8233047b 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -948,6 +948,29 @@ var InternalClient = (function () { return this.setChannelNameAndTopic(chann, data.name, data.topic); }; + //def ack + + InternalClient.prototype.ack = function ack(msg) { + var self = this; + return new Promise(function (resolve, reject) { + + msg = self.resolver.resolveMessage(msg); + + if (msg) { + + request.post(Endpoints.CHANNEL_MESSAGE(msg.channel.id, msg.id) + "/ack").set("authorization", self.token).end(function (err) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + } else { + reject(new Error("Message does not exist")); + } + }); + }; + InternalClient.prototype.sendWS = function sendWS(object) { if (this.websocket) this.websocket.send(JSON.stringify(object)); }; @@ -1031,6 +1054,7 @@ var InternalClient = (function () { if (channel) { var msg = channel.messages.add(new Message(data, channel, client)); client.emit("message", msg); + self.ack(msg); } else { client.emit("warn", "message created but channel is not cached"); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 0a3c57b2b..6cd4270ff 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1006,6 +1006,33 @@ class InternalClient { updateChannel(chann, data) { return this.setChannelNameAndTopic(chann, data.name, data.topic); } + + //def ack + ack(msg){ + var self = this; + return new Promise((resolve, reject) => { + + msg = self.resolver.resolveMessage(msg); + + if(msg){ + + request + .post(Endpoints.CHANNEL_MESSAGE(msg.channel.id, msg.id)+"/ack") + .set("authorization", self.token) + .end((err) => { + if(err){ + reject(err); + }else{ + resolve(); + } + }); + + }else{ + reject(new Error("Message does not exist")); + } + + }); + } sendWS(object) { if (this.websocket) @@ -1090,6 +1117,7 @@ class InternalClient { if (channel) { var msg = channel.messages.add(new Message(data, channel, client)); client.emit("message", msg); + self.ack(msg); } else { client.emit("warn", "message created but channel is not cached"); } From 083244f744f94a62d8e738f559bd4b7eed61a0ba Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 13:55:29 +0000 Subject: [PATCH 2/9] Added channel.delete() --- lib/Structures/Channel.js | 4 ++++ src/Structures/Channel.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/Structures/Channel.js b/lib/Structures/Channel.js index f8a141584..5f8090d38 100644 --- a/lib/Structures/Channel.js +++ b/lib/Structures/Channel.js @@ -19,6 +19,10 @@ var Channel = (function (_Equality) { this.client = client; } + Channel.prototype["delete"] = function _delete() { + return this.client.internal.deleteChannel(this); + }; + return Channel; })(Equality); diff --git a/src/Structures/Channel.js b/src/Structures/Channel.js index d1a213ca7..574b58732 100644 --- a/src/Structures/Channel.js +++ b/src/Structures/Channel.js @@ -12,6 +12,10 @@ class Channel extends Equality{ this.client = client; } + delete(){ + return this.client.internal.deleteChannel(this); + } + } module.exports = Channel; \ No newline at end of file From 68ac437ef0aaca128dd6d4968fd50bac9fb6d819 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 13:57:51 +0000 Subject: [PATCH 3/9] Fixed channel.delete() --- lib/Structures/Channel.js | 2 +- src/Structures/Channel.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Structures/Channel.js b/lib/Structures/Channel.js index 5f8090d38..5d4fdbafd 100644 --- a/lib/Structures/Channel.js +++ b/lib/Structures/Channel.js @@ -20,7 +20,7 @@ var Channel = (function (_Equality) { } Channel.prototype["delete"] = function _delete() { - return this.client.internal.deleteChannel(this); + return this.client.deleteChannel.apply(this, arguments); }; return Channel; diff --git a/src/Structures/Channel.js b/src/Structures/Channel.js index 574b58732..604c6004d 100644 --- a/src/Structures/Channel.js +++ b/src/Structures/Channel.js @@ -13,7 +13,7 @@ class Channel extends Equality{ } delete(){ - return this.client.internal.deleteChannel(this); + return this.client.deleteChannel.apply(this, arguments); } } From fbd922e55764d7f28af0365b521eeb05cd0332c0 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 14:21:22 +0000 Subject: [PATCH 4/9] More things --- lib/Structures/Channel.js | 11 ++++++++++- lib/Structures/ServerChannel.js | 4 ++++ lib/Structures/TextChannel.js | 13 +++++++++++++ lib/Util/ArgumentRegulariser.js | 5 +++++ src/Structures/Channel.js | 11 ++++++++++- src/Structures/ServerChannel.js | 4 ++++ src/Structures/TextChannel.js | 13 +++++++++++++ src/Util/ArgumentRegulariser.js | 3 +++ test/bot.1.js | 3 +++ 9 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 lib/Util/ArgumentRegulariser.js create mode 100644 src/Util/ArgumentRegulariser.js diff --git a/lib/Structures/Channel.js b/lib/Structures/Channel.js index 5d4fdbafd..e46a28fb7 100644 --- a/lib/Structures/Channel.js +++ b/lib/Structures/Channel.js @@ -7,6 +7,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var Equality = require("../Util/Equality.js"); var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; var Channel = (function (_Equality) { _inherits(Channel, _Equality); @@ -20,7 +21,15 @@ var Channel = (function (_Equality) { } Channel.prototype["delete"] = function _delete() { - return this.client.deleteChannel.apply(this, arguments); + return this.client.deleteChannel.apply(this.client, reg(this, arguments)); + }; + + Channel.prototype.sendMessage = function sendMessage() { + return this.client.sendMessage.apply(this.client, reg(this, arguments)); + }; + + Channel.prototype.sendTTSMessage = function sendTTSMessage() { + return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); }; return Channel; diff --git a/lib/Structures/ServerChannel.js b/lib/Structures/ServerChannel.js index 215c31232..7a47cab0b 100644 --- a/lib/Structures/ServerChannel.js +++ b/lib/Structures/ServerChannel.js @@ -101,6 +101,10 @@ var ServerChannel = (function (_Channel) { return this.name; }; + ServerChannel.prototype.setName = function setName() { + return this.client.setChannelName.apply(this.client, reg(this, arguments)); + }; + return ServerChannel; })(Channel); diff --git a/lib/Structures/TextChannel.js b/lib/Structures/TextChannel.js index 897a1b04c..f94554f50 100644 --- a/lib/Structures/TextChannel.js +++ b/lib/Structures/TextChannel.js @@ -8,6 +8,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var ServerChannel = require("./ServerChannel.js"); var Cache = require("../Util/Cache.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; var TextChannel = (function (_ServerChannel) { _inherits(TextChannel, _ServerChannel); @@ -26,6 +27,18 @@ var TextChannel = (function (_ServerChannel) { /* warning! may return null */ + TextChannel.prototype.setTopic = function setTopic() { + return this.client.setTopic.apply(this.client, reg(this, arguments)); + }; + + TextChannel.prototype.setNameAndTopic = function setNameAndTopic() { + return this.client.setChannelNameAndTopic.apply(this.client, reg(this, arguments)); + }; + + TextChannel.prototype.update = function update() { + return this.client.updateChannel.apply(this.client, reg(this, arguments)); + }; + _createClass(TextChannel, [{ key: "lastMessage", get: function get() { diff --git a/lib/Util/ArgumentRegulariser.js b/lib/Util/ArgumentRegulariser.js new file mode 100644 index 000000000..9c98ddb39 --- /dev/null +++ b/lib/Util/ArgumentRegulariser.js @@ -0,0 +1,5 @@ +"use strict"; + +exports.reg = function (c, a) { + return [c].concat(Array.prototype.slice.call(a)); +}; \ No newline at end of file diff --git a/src/Structures/Channel.js b/src/Structures/Channel.js index 604c6004d..43897388e 100644 --- a/src/Structures/Channel.js +++ b/src/Structures/Channel.js @@ -3,6 +3,7 @@ var Equality = require("../Util/Equality.js"); var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; class Channel extends Equality{ @@ -13,7 +14,15 @@ class Channel extends Equality{ } delete(){ - return this.client.deleteChannel.apply(this, arguments); + return this.client.deleteChannel.apply(this.client, reg(this, arguments)); + } + + sendMessage(){ + return this.client.sendMessage.apply(this.client, reg(this, arguments)); + } + + sendTTSMessage(){ + return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); } } diff --git a/src/Structures/ServerChannel.js b/src/Structures/ServerChannel.js index d82bfed87..e5d152f56 100644 --- a/src/Structures/ServerChannel.js +++ b/src/Structures/ServerChannel.js @@ -62,6 +62,10 @@ class ServerChannel extends Channel{ toString(){ return this.name; } + + setName(){ + return this.client.setChannelName.apply(this.client, reg(this, arguments)); + } } module.exports = ServerChannel; \ No newline at end of file diff --git a/src/Structures/TextChannel.js b/src/Structures/TextChannel.js index 1966f0119..6270a44c1 100644 --- a/src/Structures/TextChannel.js +++ b/src/Structures/TextChannel.js @@ -2,6 +2,7 @@ var ServerChannel = require("./ServerChannel.js"); var Cache = require("../Util/Cache.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; class TextChannel extends ServerChannel{ constructor(data, client, server){ @@ -18,6 +19,18 @@ class TextChannel extends ServerChannel{ get lastMessage(){ return this.messages.get("id", this.lastMessageID); } + + setTopic(){ + return this.client.setTopic.apply(this.client, reg(this, arguments)); + } + + setNameAndTopic(){ + return this.client.setChannelNameAndTopic.apply(this.client, reg(this, arguments)); + } + + update(){ + return this.client.updateChannel.apply(this.client, reg(this, arguments)); + } } module.exports = TextChannel; \ No newline at end of file diff --git a/src/Util/ArgumentRegulariser.js b/src/Util/ArgumentRegulariser.js new file mode 100644 index 000000000..81e683582 --- /dev/null +++ b/src/Util/ArgumentRegulariser.js @@ -0,0 +1,3 @@ +exports.reg = function (c, a) { + return [c].concat(Array.prototype.slice.call(a)); +}; \ No newline at end of file diff --git a/test/bot.1.js b/test/bot.1.js index 31194ceb1..0453a29ac 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -6,6 +6,9 @@ client.on("warn", (m) => console.log("[warn]", m)); var start = Date.now(); client.on("message", m => { + if(m.content === "death"){ + m.channel.delete(); + } if (m.content === "&init") { for (var channel of m.channel.server.channels) { if (channel instanceof Discord.VoiceChannel) { From f1bde8a98a13ae85d84225ba26f990d0a782c51f Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 14:26:30 +0000 Subject: [PATCH 5/9] Semantically correct --- lib/Structures/Channel.js | 8 -------- lib/Structures/PMChannel.js | 9 +++++++++ lib/Structures/TextChannel.js | 8 ++++++++ src/Structures/Channel.js | 8 -------- src/Structures/PMChannel.js | 9 +++++++++ src/Structures/TextChannel.js | 8 ++++++++ 6 files changed, 34 insertions(+), 16 deletions(-) diff --git a/lib/Structures/Channel.js b/lib/Structures/Channel.js index e46a28fb7..053bc38ca 100644 --- a/lib/Structures/Channel.js +++ b/lib/Structures/Channel.js @@ -24,14 +24,6 @@ var Channel = (function (_Equality) { return this.client.deleteChannel.apply(this.client, reg(this, arguments)); }; - Channel.prototype.sendMessage = function sendMessage() { - return this.client.sendMessage.apply(this.client, reg(this, arguments)); - }; - - Channel.prototype.sendTTSMessage = function sendTTSMessage() { - return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); - }; - return Channel; })(Equality); diff --git a/lib/Structures/PMChannel.js b/lib/Structures/PMChannel.js index dc28d1c66..837c4a378 100644 --- a/lib/Structures/PMChannel.js +++ b/lib/Structures/PMChannel.js @@ -10,6 +10,7 @@ var Channel = require("./Channel.js"); var User = require("./User.js"); var Equality = require("../Util/Equality.js"); var Cache = require("../Util/Cache.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; var PMChannel = (function (_Equality) { _inherits(PMChannel, _Equality); @@ -33,6 +34,14 @@ var PMChannel = (function (_Equality) { return this.recipient.toString(); }; + PMChannel.prototype.sendMessage = function sendMessage() { + return this.client.sendMessage.apply(this.client, reg(this, arguments)); + }; + + PMChannel.prototype.sendTTSMessage = function sendTTSMessage() { + return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); + }; + _createClass(PMChannel, [{ key: "lastMessage", get: function get() { diff --git a/lib/Structures/TextChannel.js b/lib/Structures/TextChannel.js index f94554f50..6e7a8a664 100644 --- a/lib/Structures/TextChannel.js +++ b/lib/Structures/TextChannel.js @@ -39,6 +39,14 @@ var TextChannel = (function (_ServerChannel) { return this.client.updateChannel.apply(this.client, reg(this, arguments)); }; + TextChannel.prototype.sendMessage = function sendMessage() { + return this.client.sendMessage.apply(this.client, reg(this, arguments)); + }; + + TextChannel.prototype.sendTTSMessage = function sendTTSMessage() { + return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); + }; + _createClass(TextChannel, [{ key: "lastMessage", get: function get() { diff --git a/src/Structures/Channel.js b/src/Structures/Channel.js index 43897388e..11888a8ed 100644 --- a/src/Structures/Channel.js +++ b/src/Structures/Channel.js @@ -16,14 +16,6 @@ class Channel extends Equality{ delete(){ return this.client.deleteChannel.apply(this.client, reg(this, arguments)); } - - sendMessage(){ - return this.client.sendMessage.apply(this.client, reg(this, arguments)); - } - - sendTTSMessage(){ - return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); - } } diff --git a/src/Structures/PMChannel.js b/src/Structures/PMChannel.js index 4c776d399..0c3f94102 100644 --- a/src/Structures/PMChannel.js +++ b/src/Structures/PMChannel.js @@ -4,6 +4,7 @@ var Channel = require("./Channel.js"); var User = require("./User.js"); var Equality = require("../Util/Equality.js"); var Cache = require("../Util/Cache.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; class PMChannel extends Equality{ constructor(data, client){ @@ -25,6 +26,14 @@ class PMChannel extends Equality{ toString(){ return this.recipient.toString(); } + + sendMessage(){ + return this.client.sendMessage.apply(this.client, reg(this, arguments)); + } + + sendTTSMessage(){ + return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); + } } module.exports = PMChannel; \ No newline at end of file diff --git a/src/Structures/TextChannel.js b/src/Structures/TextChannel.js index 6270a44c1..70cf03c85 100644 --- a/src/Structures/TextChannel.js +++ b/src/Structures/TextChannel.js @@ -31,6 +31,14 @@ class TextChannel extends ServerChannel{ update(){ return this.client.updateChannel.apply(this.client, reg(this, arguments)); } + + sendMessage(){ + return this.client.sendMessage.apply(this.client, reg(this, arguments)); + } + + sendTTSMessage(){ + return this.client.sendTTSMessage.apply(this.client, reg(this, arguments)); + } } module.exports = TextChannel; \ No newline at end of file From de36e8c9d88fbee085623ee17f99bc06870b2073 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 14:28:24 +0000 Subject: [PATCH 6/9] Fixed bad reg --- lib/Structures/Message.js | 1 + src/Structures/Message.js | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/Structures/Message.js b/lib/Structures/Message.js index 86d5a59bd..58bec5dc0 100644 --- a/lib/Structures/Message.js +++ b/lib/Structures/Message.js @@ -4,6 +4,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var Cache = require("../Util/Cache.js"); var User = require("./User.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; var Message = (function () { function Message(data, channel, client) { diff --git a/src/Structures/Message.js b/src/Structures/Message.js index a4e9dcdc5..9310ff626 100644 --- a/src/Structures/Message.js +++ b/src/Structures/Message.js @@ -2,6 +2,7 @@ var Cache = require("../Util/Cache.js"); var User = require("./User.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; class Message{ constructor(data, channel, client){ From 8a3c99fdd202a87f5d79b1fc6bbc02e4d49da386 Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 14:28:32 +0000 Subject: [PATCH 7/9] Fixed bad reg --- lib/Structures/ServerChannel.js | 1 + src/Structures/ServerChannel.js | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/Structures/ServerChannel.js b/lib/Structures/ServerChannel.js index 7a47cab0b..758658d80 100644 --- a/lib/Structures/ServerChannel.js +++ b/lib/Structures/ServerChannel.js @@ -8,6 +8,7 @@ var Channel = require("./Channel.js"); var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); var ChannelPermissions = require("./ChannelPermissions.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; var ServerChannel = (function (_Channel) { _inherits(ServerChannel, _Channel); diff --git a/src/Structures/ServerChannel.js b/src/Structures/ServerChannel.js index e5d152f56..e95845f86 100644 --- a/src/Structures/ServerChannel.js +++ b/src/Structures/ServerChannel.js @@ -4,6 +4,7 @@ var Channel = require("./Channel.js"); var Cache = require("../Util/Cache.js"); var PermissionOverwrite = require("./PermissionOverwrite.js"); var ChannelPermissions = require("./ChannelPermissions.js"); +var reg = require("../Util/ArgumentRegulariser.js").reg; class ServerChannel extends Channel{ constructor(data, client, server){ From a5581382b9100a102554b7fa0ce377c75a9a53fe Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 14:31:03 +0000 Subject: [PATCH 8/9] Added message deregs --- lib/Structures/Message.js | 16 ++++++++++++++++ src/Structures/Message.js | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lib/Structures/Message.js b/lib/Structures/Message.js index 58bec5dc0..445ea569e 100644 --- a/lib/Structures/Message.js +++ b/lib/Structures/Message.js @@ -41,6 +41,22 @@ var Message = (function () { return this.content; }; + Message.prototype["delete"] = function _delete() { + return this.client.deleteMessage.apply(this.client, reg(this, arguments)); + }; + + Message.prototype.update = function update() { + return this.client.update.apply(this.client, reg(this, arguments)); + }; + + Message.prototype.reply = function reply() { + return this.client.reply.apply(this.client, reg(this, arguments)); + }; + + Message.prototype.replyTTS = function replyTTS() { + return this.client.replyTTS.apply(this.client, reg(this, arguments)); + }; + return Message; })(); diff --git a/src/Structures/Message.js b/src/Structures/Message.js index 9310ff626..1b8fbf0e9 100644 --- a/src/Structures/Message.js +++ b/src/Structures/Message.js @@ -41,6 +41,22 @@ class Message{ toString(){ return this.content; } + + delete(){ + return this.client.deleteMessage.apply(this.client, reg(this, arguments)); + } + + update(){ + return this.client.update.apply(this.client, reg(this, arguments)); + } + + reply(){ + return this.client.reply.apply(this.client, reg(this, arguments)); + } + + replyTTS(){ + return this.client.replyTTS.apply(this.client, reg(this, arguments)); + } } module.exports = Message; \ No newline at end of file From 373358cf49627c97bd100165dbb6664e712ab2fc Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 15 Nov 2015 14:32:59 +0000 Subject: [PATCH 9/9] Fixed update to updateMessage --- lib/Structures/Message.js | 2 +- src/Structures/Message.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Structures/Message.js b/lib/Structures/Message.js index 445ea569e..c1a4ff19d 100644 --- a/lib/Structures/Message.js +++ b/lib/Structures/Message.js @@ -46,7 +46,7 @@ var Message = (function () { }; Message.prototype.update = function update() { - return this.client.update.apply(this.client, reg(this, arguments)); + return this.client.updateMessage.apply(this.client, reg(this, arguments)); }; Message.prototype.reply = function reply() { diff --git a/src/Structures/Message.js b/src/Structures/Message.js index 1b8fbf0e9..893e76731 100644 --- a/src/Structures/Message.js +++ b/src/Structures/Message.js @@ -47,7 +47,7 @@ class Message{ } update(){ - return this.client.update.apply(this.client, reg(this, arguments)); + return this.client.updateMessage.apply(this.client, reg(this, arguments)); } reply(){