diff --git a/lib/Client.js b/lib/Client.js index 035d49f07..29b5bb38f 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -43,7 +43,7 @@ var Client = (function () { this.user = null; this.alreadySentData = false; this.serverCreateListener = {}; - + this.typingIntervals = {}; this.email = "abc"; this.password = "abc"; @@ -1354,7 +1354,7 @@ var Client = (function () { op: 2, d: { token: this.token, - v: 2, + v: 3, properties: { "$os": "discord.js", "$browser": "discord.js", @@ -1666,6 +1666,47 @@ var Client = (function () { value: function setStatusAway() { this.setStatusIdle(); } + }, { + key: "startTyping", + value: function startTyping(chann) { + var self = this; + + this.resolveDestination(chann).then(next); + + function next(channel) { + if (self.typingIntervals[channel]) { + return; + } + + var fn = function fn() { + console.log(Endpoints.CHANNELS + "/" + channel + "/typing"); + request.post(Endpoints.CHANNELS + "/" + channel + "/typing").set("authorization", self.token).end(); + }; + + fn(); + + var interval = setInterval(fn, 3000); + + self.typingIntervals[channel] = interval; + } + } + }, { + key: "stopTyping", + value: function stopTyping(chann) { + var self = this; + + this.resolveDestination(chann).then(next); + + function next(channel) { + if (!self.typingIntervals[channel]) { + return; + } + + clearInterval(self.typingIntervals[channel]); + + delete self.typingIntervals[channel]; + } + } }, { key: "setStatus", value: function setStatus(stat) { diff --git a/src/Client.js b/src/Client.js index 927c79bfa..f0a0aba1f 100644 --- a/src/Client.js +++ b/src/Client.js @@ -33,7 +33,7 @@ class Client { this.user = null; this.alreadySentData = false; this.serverCreateListener = {}; - + this.typingIntervals = {}; this.email = "abc"; this.password = "abc"; @@ -1115,7 +1115,7 @@ class Client { op: 2, d: { token: this.token, - v: 2, + v: 3, properties: { "$os": "discord.js", "$browser": "discord.js", @@ -1403,6 +1403,49 @@ class Client { this.setStatusIdle(); } + startTyping(chann){ + var self = this; + + this.resolveDestination(chann).then(next); + + function next(channel){ + if(self.typingIntervals[channel]){ + return; + } + + var fn = function(){ + console.log(`${Endpoints.CHANNELS}/${channel}/typing`); + request + .post(`${Endpoints.CHANNELS}/${channel}/typing`) + .set("authorization", self.token) + .end(); + }; + + fn(); + + var interval = setInterval(fn, 3000); + + self.typingIntervals[channel] = interval; + } + } + + stopTyping(chann){ + var self = this; + + this.resolveDestination(chann).then(next); + + function next(channel){ + if(!self.typingIntervals[channel]){ + return; + } + + clearInterval(self.typingIntervals[channel]); + + delete self.typingIntervals[channel]; + + } + } + setStatus(stat){ var idleTime = (stat === "online" ? null : Date.now()); diff --git a/test/bot.1.js b/test/bot.1.js index 131ac7322..464caec86 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -19,13 +19,13 @@ mybot.on("message", function (message) { var onlineUsers = 0; - mybot.setStatusIdle(); - - mybot.reply(message, onlineUsers); + mybot.startTyping(message.channel); setTimeout(function(){ - mybot.setStatusOnline(); - },5000); + mybot.reply(message, "stopping now k"); + mybot.stopTyping(message.channel); + }, 6000); + }); mybot.on("ready", function () {