diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 71feaea0d..7ccb35766 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -628,7 +628,7 @@ var Client = (function (_EventEmitter) { }; /** - * Leaves a Discord Server, alias to `client.leaveServer` + * Deletes a Discord Server * @param {ServerResolvable} server the server to leave * @param {function(err: Error)} [callback] callback to the method * @returns {Promise} resolves null if successful, otherwise rejects with an error. @@ -637,7 +637,7 @@ var Client = (function (_EventEmitter) { Client.prototype.deleteServer = function deleteServer(server) { var callback = arguments.length <= 1 || arguments[1] === undefined ? function () /*err, {}*/{} : arguments[1]; - return this.internal.leaveServer(server).then(dataCallback(callback), errorCallback(callback)); + return this.internal.deleteServer(server).then(dataCallback(callback), errorCallback(callback)); }; // def createChannel diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 972cc8941..b853e4fd2 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -427,7 +427,7 @@ var InternalClient = (function () { return Promise.reject(new Error("server did not resolve")); } - return this.apiRequest("del", _Constants.Endpoints.SERVER(server.id), true).then(function () { + return this.apiRequest("del", _Constants.Endpoints.ME_SERVER(server.id), true).then(function () { // remove channels of server then the server for (var _iterator3 = server.channels, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { var _ref3; @@ -450,11 +450,44 @@ var InternalClient = (function () { }); }; + //def deleteServer + + InternalClient.prototype.deleteServer = function deleteServer(srv) { + var _this9 = this; + + var server = this.resolver.resolveServer(srv); + if (!server) { + return Promise.reject(new Error("server did not resolve")); + } + + return this.apiRequest("del", _Constants.Endpoints.SERVER(server.id), true).then(function () { + // remove channels of server then the server + for (var _iterator4 = server.channels, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; + } + + var chan = _ref4; + + _this9.channels.remove(chan); + } + // remove server + _this9.servers.remove(server); + }); + }; + // def loginWithToken // email and password are optional InternalClient.prototype.loginWithToken = function loginWithToken(token, email, password) { - var _this9 = this; + var _this10 = this; this.state = _ConnectionState2["default"].LOGGED_IN; this.token = token; @@ -462,7 +495,7 @@ var InternalClient = (function () { this.password = password; return this.getGateway().then(function (url) { - _this9.createWS(url); + _this10.createWS(url); return token; }); }; @@ -470,14 +503,14 @@ var InternalClient = (function () { // def login InternalClient.prototype.login = function login(email, password) { - var _this10 = this; + var _this11 = this; var client = this.client; if (!this.tokenCacher.done) { return new Promise(function (resolve, reject) { setTimeout(function () { - _this10.login(email, password).then(resolve)["catch"](reject); + _this11.login(email, password).then(resolve)["catch"](reject); }, 20); }); } else { @@ -498,15 +531,15 @@ var InternalClient = (function () { email: email, password: password }).then(function (res) { - _this10.client.emit("debug", "direct API login, cached token was unavailable"); + _this11.client.emit("debug", "direct API login, cached token was unavailable"); var token = res.token; - _this10.tokenCacher.setToken(email, password, token); - return _this10.loginWithToken(token, email, password); + _this11.tokenCacher.setToken(email, password, token); + return _this11.loginWithToken(token, email, password); }, function (error) { - _this10.websocket = null; + _this11.websocket = null; throw error; })["catch"](function (error) { - _this10.state = _ConnectionState2["default"].DISCONNECTED; + _this11.state = _ConnectionState2["default"].DISCONNECTED; client.emit("disconnected"); throw error; }); @@ -515,28 +548,28 @@ var InternalClient = (function () { // def logout InternalClient.prototype.logout = function logout() { - var _this11 = this; + var _this12 = this; if (this.state === _ConnectionState2["default"].DISCONNECTED || this.state === _ConnectionState2["default"].IDLE) { return Promise.reject(new Error("Client is not logged in!")); } return this.apiRequest("post", _Constants.Endpoints.LOGOUT, true).then(function () { - if (_this11.websocket) { - _this11.websocket.close(); - _this11.websocket = null; + if (_this12.websocket) { + _this12.websocket.close(); + _this12.websocket = null; } - _this11.token = null; - _this11.email = null; - _this11.password = null; - _this11.state = _ConnectionState2["default"].DISCONNECTED; + _this12.token = null; + _this12.email = null; + _this12.password = null; + _this12.state = _ConnectionState2["default"].DISCONNECTED; }); }; // def startPM InternalClient.prototype.startPM = function startPM(resUser) { - var _this12 = this; + var _this13 = this; var user = this.resolver.resolveUser(resUser); if (!user) { @@ -546,7 +579,7 @@ var InternalClient = (function () { return this.apiRequest("post", _Constants.Endpoints.USER_CHANNELS(user.id), true, { recipient_id: user.id }).then(function (res) { - return _this12.private_channels.add(new _StructuresPMChannel2["default"](res, _this12.client)); + return _this13.private_channels.add(new _StructuresPMChannel2["default"](res, _this13.client)); }); }; @@ -561,19 +594,19 @@ var InternalClient = (function () { // def sendMessage InternalClient.prototype.sendMessage = function sendMessage(where, _content) { - var _this13 = this; + var _this14 = this; var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; return this.resolver.resolveChannel(where).then(function (destination) { //var destination; - var content = _this13.resolver.resolveString(_content); + var content = _this14.resolver.resolveString(_content); - return _this13.apiRequest("post", _Constants.Endpoints.CHANNEL_MESSAGES(destination.id), true, { + return _this14.apiRequest("post", _Constants.Endpoints.CHANNEL_MESSAGES(destination.id), true, { content: content, tts: options.tts }).then(function (res) { - return destination.messages.add(new _StructuresMessage2["default"](res, destination, _this13.client)); + return destination.messages.add(new _StructuresMessage2["default"](res, destination, _this14.client)); }); }); }; @@ -581,7 +614,7 @@ var InternalClient = (function () { // def deleteMessage InternalClient.prototype.deleteMessage = function deleteMessage(_message) { - var _this14 = this; + var _this15 = this; var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; @@ -592,7 +625,7 @@ var InternalClient = (function () { var chain = options.wait ? delay(options.wait) : Promise.resolve(); return chain.then(function () { - return _this14.apiRequest("del", _Constants.Endpoints.CHANNEL_MESSAGE(message.channel.id, message.id), true); + return _this15.apiRequest("del", _Constants.Endpoints.CHANNEL_MESSAGE(message.channel.id, message.id), true); }).then(function () { return message.channel.messages.remove(message); }); @@ -601,7 +634,7 @@ var InternalClient = (function () { // def updateMessage InternalClient.prototype.updateMessage = function updateMessage(msg, _content) { - var _this15 = this; + var _this16 = this; var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; @@ -617,14 +650,14 @@ var InternalClient = (function () { content: content, tts: options.tts }).then(function (res) { - return message.channel.messages.update(message, new _StructuresMessage2["default"](res, message.channel, _this15.client)); + return message.channel.messages.update(message, new _StructuresMessage2["default"](res, message.channel, _this16.client)); }); }; // def sendFile InternalClient.prototype.sendFile = function sendFile(where, _file, name) { - var _this16 = this; + var _this17 = this; if (!name) { if (_file instanceof String || typeof _file === "string") { @@ -638,12 +671,12 @@ var InternalClient = (function () { } return this.resolver.resolveChannel(where).then(function (channel) { - return _this16.resolver.resolveFile(_file).then(function (file) { - return _this16.apiRequest("post", _Constants.Endpoints.CHANNEL_MESSAGES(channel.id), true, null, { + return _this17.resolver.resolveFile(_file).then(function (file) { + return _this17.apiRequest("post", _Constants.Endpoints.CHANNEL_MESSAGES(channel.id), true, null, { name: name, file: file }).then(function (res) { - return channel.messages.add(new _StructuresMessage2["default"](res, channel, _this16.client)); + return channel.messages.add(new _StructuresMessage2["default"](res, channel, _this17.client)); }); }); }); @@ -652,7 +685,7 @@ var InternalClient = (function () { // def getChannelLogs InternalClient.prototype.getChannelLogs = function getChannelLogs(_channel) { - var _this17 = this; + var _this18 = this; var limit = arguments.length <= 1 || arguments[1] === undefined ? 50 : arguments[1]; var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; @@ -660,21 +693,21 @@ var InternalClient = (function () { return this.resolver.resolveChannel(_channel).then(function (channel) { var qsObject = { limit: limit }; if (options.before) { - var res = _this17.resolver.resolveMessage(options.before); + var res = _this18.resolver.resolveMessage(options.before); if (res) { qsObject.before = res.id; } } if (options.after) { - var res = _this17.resolver.resolveMessage(options.after); + var res = _this18.resolver.resolveMessage(options.after); if (res) { qsObject.after = res.id; } } - return _this17.apiRequest("get", _Constants.Endpoints.CHANNEL_MESSAGES(channel.id) + "?" + _querystring2["default"].stringify(qsObject), true).then(function (res) { + return _this18.apiRequest("get", _Constants.Endpoints.CHANNEL_MESSAGES(channel.id) + "?" + _querystring2["default"].stringify(qsObject), true).then(function (res) { return res.map(function (msg) { - return channel.messages.add(new _StructuresMessage2["default"](msg, channel, _this17.client)); + return channel.messages.add(new _StructuresMessage2["default"](msg, channel, _this18.client)); }); }); }); @@ -683,13 +716,13 @@ var InternalClient = (function () { // def getBans InternalClient.prototype.getBans = function getBans(server) { - var _this18 = this; + var _this19 = this; server = this.resolver.resolveServer(server); return this.apiRequest("get", _Constants.Endpoints.SERVER_BANS(server.id), true).then(function (res) { return res.map(function (ban) { - return _this18.users.add(new _StructuresUser2["default"](ban.user, _this18.client)); + return _this19.users.add(new _StructuresUser2["default"](ban.user, _this19.client)); }); }); }; @@ -697,7 +730,7 @@ var InternalClient = (function () { // def createChannel InternalClient.prototype.createChannel = function createChannel(server, name) { - var _this19 = this; + var _this20 = this; var type = arguments.length <= 2 || arguments[2] === undefined ? "text" : arguments[2]; @@ -709,23 +742,23 @@ var InternalClient = (function () { }).then(function (res) { var channel; if (res.type === "text") { - channel = new _StructuresTextChannel2["default"](res, _this19.client, server); + channel = new _StructuresTextChannel2["default"](res, _this20.client, server); } else { - channel = new _StructuresVoiceChannel2["default"](res, _this19.client, server); + channel = new _StructuresVoiceChannel2["default"](res, _this20.client, server); } - return server.channels.add(_this19.channels.add(channel)); + return server.channels.add(_this20.channels.add(channel)); }); }; // def deleteChannel InternalClient.prototype.deleteChannel = function deleteChannel(_channel) { - var _this20 = this; + var _this21 = this; return this.resolver.resolveChannel(_channel).then(function (channel) { - return _this20.apiRequest("del", _Constants.Endpoints.CHANNEL(channel.id), true).then(function () { + return _this21.apiRequest("del", _Constants.Endpoints.CHANNEL(channel.id), true).then(function () { channel.server.channels.remove(channel); - _this20.channels.remove(channel); + _this21.channels.remove(channel); }); }); }; @@ -763,7 +796,7 @@ var InternalClient = (function () { // def moveMember InternalClient.prototype.moveMember = function moveMember(user, channel) { - var _this21 = this; + var _this22 = this; user = this.resolver.resolveUser(user); return this.resolver.resolveChannel(channel).then(function (channel) { @@ -773,7 +806,7 @@ var InternalClient = (function () { if (channel.type !== "voice") { throw new Error("Can't moveMember into a non-voice channel"); } else { - return _this21.apiRequest("patch", _Constants.Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id, true, { channel_id: channel.id }).then(function (res) { + return _this22.apiRequest("patch", _Constants.Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id, true, { channel_id: channel.id }).then(function (res) { user.voiceChannel = channel; return res; }); @@ -784,15 +817,15 @@ var InternalClient = (function () { // def createRole InternalClient.prototype.createRole = function createRole(server, data) { - var _this22 = this; + var _this23 = this; server = this.resolver.resolveServer(server); return this.apiRequest("post", _Constants.Endpoints.SERVER_ROLES(server.id), true).then(function (res) { - var role = server.roles.add(new _StructuresRole2["default"](res, server, _this22.client)); + var role = server.roles.add(new _StructuresRole2["default"](res, server, _this23.client)); if (data) { - return _this22.updateRole(role, data); + return _this23.updateRole(role, data); } return role; }); @@ -801,7 +834,7 @@ var InternalClient = (function () { // def updateRole InternalClient.prototype.updateRole = function updateRole(role, data) { - var _this23 = this; + var _this24 = this; role = this.resolver.resolveRole(role); var server = this.resolver.resolveServer(role.server); @@ -815,19 +848,19 @@ var InternalClient = (function () { if (data.permissions) { newData.permissions = 0; - for (var _iterator4 = data.permissions, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref4; + for (var _iterator5 = data.permissions, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref5; - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref4 = _iterator4[_i4++]; + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref5 = _iterator5[_i5++]; } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref4 = _i4.value; + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref5 = _i5.value; } - var perm = _ref4; + var perm = _ref5; if (perm instanceof String || typeof perm === "string") { newData.permissions |= _Constants.Permissions[perm] || 0; @@ -838,7 +871,7 @@ var InternalClient = (function () { } return this.apiRequest("patch", _Constants.Endpoints.SERVER_ROLES(server.id) + "/" + role.id, true, newData).then(function (res) { - return server.roles.update(role, new _StructuresRole2["default"](res, server, _this23.client)); + return server.roles.update(role, new _StructuresRole2["default"](res, server, _this24.client)); }); }; @@ -855,7 +888,7 @@ var InternalClient = (function () { //def addMemberToRole InternalClient.prototype.addMemberToRole = function addMemberToRole(member, roles) { - var _this24 = this; + var _this25 = this; member = this.resolver.resolveUser(member); @@ -872,7 +905,7 @@ var InternalClient = (function () { } } else { roles = roles.map(function (r) { - return _this24.resolver.resolveRole(r); + return _this25.resolver.resolveRole(r); }); } @@ -920,7 +953,7 @@ var InternalClient = (function () { //def removeMemberFromRole InternalClient.prototype.removeMemberFromRole = function removeMemberFromRole(member, roles) { - var _this25 = this; + var _this26 = this; member = this.resolver.resolveUser(member); @@ -937,7 +970,7 @@ var InternalClient = (function () { } } else { roles = roles.map(function (r) { - return _this25.resolver.resolveRole(r); + return _this26.resolver.resolveRole(r); }); } @@ -945,19 +978,19 @@ var InternalClient = (function () { return r.id; }); - for (var _iterator5 = roles, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref5; + for (var _iterator6 = roles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref6; - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref5 = _iterator5[_i5++]; + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref6 = _iterator6[_i6++]; } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref5 = _i5.value; + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref6 = _i6.value; } - var role = _ref5; + var role = _ref6; if (!role.server.memberMap[member.id]) { return Promise.reject(new Error("member not in server")); @@ -978,7 +1011,7 @@ var InternalClient = (function () { // def createInvite InternalClient.prototype.createInvite = function createInvite(chanServ, options) { - var _this26 = this; + var _this27 = this; return this.resolver.resolveChannel(chanServ).then(function (channel) { if (!options) { @@ -992,8 +1025,8 @@ var InternalClient = (function () { options.xkcdpass = options.xkcd || false; } - return _this26.apiRequest("post", _Constants.Endpoints.CHANNEL_INVITES(channel.id), true, options).then(function (res) { - return new _StructuresInvite2["default"](res, _this26.channels.get("id", res.channel.id), _this26.client); + return _this27.apiRequest("post", _Constants.Endpoints.CHANNEL_INVITES(channel.id), true, options).then(function (res) { + return new _StructuresInvite2["default"](res, _this27.channels.get("id", res.channel.id), _this27.client); }); }); }; @@ -1011,7 +1044,7 @@ var InternalClient = (function () { //def getInvite InternalClient.prototype.getInvite = function getInvite(invite) { - var _this27 = this; + var _this28 = this; invite = this.resolver.resolveInviteID(invite); if (!invite) { @@ -1019,11 +1052,11 @@ var InternalClient = (function () { } return this.apiRequest("get", _Constants.Endpoints.INVITE(invite), true).then(function (res) { - if (!_this27.channels.has("id", res.channel.id)) { - return new _StructuresInvite2["default"](res, null, _this27.client); + if (!_this28.channels.has("id", res.channel.id)) { + return new _StructuresInvite2["default"](res, null, _this28.client); } - return _this27.apiRequest("post", _Constants.Endpoints.CHANNEL_INVITES(res.channel.id), true, { validate: invite }).then(function (res2) { - return new _StructuresInvite2["default"](res2, _this27.channels.get("id", res.channel.id), _this27.client); + return _this28.apiRequest("post", _Constants.Endpoints.CHANNEL_INVITES(res.channel.id), true, { validate: invite }).then(function (res2) { + return new _StructuresInvite2["default"](res2, _this28.channels.get("id", res.channel.id), _this28.client); }); }); }; @@ -1031,22 +1064,22 @@ var InternalClient = (function () { //def getInvites InternalClient.prototype.getInvites = function getInvites(channel) { - var _this28 = this; + var _this29 = this; if (!(channel instanceof _StructuresChannel2["default"])) { var server = this.resolver.resolveServer(channel); if (server) { return this.apiRequest("get", _Constants.Endpoints.SERVER_INVITES(server.id), true).then(function (res) { return res.map(function (data) { - return new _StructuresInvite2["default"](data, _this28.channels.get("id", data.channel.id), _this28.client); + return new _StructuresInvite2["default"](data, _this29.channels.get("id", data.channel.id), _this29.client); }); }); } } return this.resolver.resolveChannel(channel).then(function (channel) { - return _this28.apiRequest("get", _Constants.Endpoints.CHANNEL_INVITES(channel.id), true).then(function (res) { + return _this29.apiRequest("get", _Constants.Endpoints.CHANNEL_INVITES(channel.id), true).then(function (res) { return res.map(function (data) { - return new _StructuresInvite2["default"](data, _this28.channels.get("id", data.channel.id), _this28.client); + return new _StructuresInvite2["default"](data, _this29.channels.get("id", data.channel.id), _this29.client); }); }); }); @@ -1055,14 +1088,14 @@ var InternalClient = (function () { //def overwritePermissions InternalClient.prototype.overwritePermissions = function overwritePermissions(channel, role, updated) { - var _this29 = this; + var _this30 = this; return this.resolver.resolveChannel(channel).then(function (channel) { var user; if (role instanceof _StructuresUser2["default"]) { user = role; } else { - role = _this29.resolver.resolveRole(role); + role = _this30.resolver.resolveRole(role); } var data = {}; @@ -1098,7 +1131,7 @@ var InternalClient = (function () { } } - return _this29.apiRequest("put", _Constants.Endpoints.CHANNEL_PERMISSIONS(channel.id) + "/" + data.id, true, data); + return _this30.apiRequest("put", _Constants.Endpoints.CHANNEL_PERMISSIONS(channel.id) + "/" + data.id, true, data); }); }; @@ -1137,49 +1170,49 @@ var InternalClient = (function () { //def sendTyping InternalClient.prototype.sendTyping = function sendTyping(channel) { - var _this30 = this; + var _this31 = this; return this.resolver.resolveChannel(channel).then(function (channel) { - return _this30.apiRequest("post", _Constants.Endpoints.CHANNEL(channel.id) + "/typing", true); + return _this31.apiRequest("post", _Constants.Endpoints.CHANNEL(channel.id) + "/typing", true); }); }; //def startTyping InternalClient.prototype.startTyping = function startTyping(channel) { - var _this31 = this; + var _this32 = this; return this.resolver.resolveChannel(channel).then(function (channel) { - if (_this31.intervals.typing[channel.id]) { + if (_this32.intervals.typing[channel.id]) { // typing interval already exists, leave it alone throw new Error("Already typing in that channel"); } - _this31.intervals.typing[channel.id] = setInterval(function () { - return _this31.sendTyping(channel)["catch"](function (error) { - return _this31.emit("error", error); + _this32.intervals.typing[channel.id] = setInterval(function () { + return _this32.sendTyping(channel)["catch"](function (error) { + return _this32.emit("error", error); }); }, 4000); - return _this31.sendTyping(channel); + return _this32.sendTyping(channel); }); }; //def stopTyping InternalClient.prototype.stopTyping = function stopTyping(channel) { - var _this32 = this; + var _this33 = this; return this.resolver.resolveChannel(channel).then(function (channel) { - if (!_this32.intervals.typing[channel.id]) { + if (!_this33.intervals.typing[channel.id]) { // typing interval doesn"t exist throw new Error("Not typing in that channel"); } - clearInterval(_this32.intervals.typing[channel.id]); - _this32.intervals.typing[channel.id] = false; + clearInterval(_this33.intervals.typing[channel.id]); + _this33.intervals.typing[channel.id] = false; }); }; @@ -1213,12 +1246,12 @@ var InternalClient = (function () { //def setChannelTopic InternalClient.prototype.setChannelTopic = function setChannelTopic(chann) { - var _this33 = this; + var _this34 = this; var topic = arguments.length <= 1 || arguments[1] === undefined ? "" : arguments[1]; return this.resolver.resolveChannel(chann).then(function (channel) { - return _this33.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { + return _this34.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { name: channel.name, position: channel.position, topic: topic @@ -1231,12 +1264,12 @@ var InternalClient = (function () { //def setChannelName InternalClient.prototype.setChannelName = function setChannelName(chann) { - var _this34 = this; + var _this35 = this; var name = arguments.length <= 1 || arguments[1] === undefined ? "discordjs_is_the_best" : arguments[1]; return this.resolver.resolveChannel(chann).then(function (channel) { - return _this34.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { + return _this35.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { name: name, position: channel.position, topic: channel.topic @@ -1249,13 +1282,13 @@ var InternalClient = (function () { //def setChannelNameAndTopic InternalClient.prototype.setChannelNameAndTopic = function setChannelNameAndTopic(chann) { - var _this35 = this; + var _this36 = this; var name = arguments.length <= 1 || arguments[1] === undefined ? "discordjs_is_the_best" : arguments[1]; var topic = arguments.length <= 2 || arguments[2] === undefined ? "" : arguments[2]; return this.resolver.resolveChannel(chann).then(function (channel) { - return _this35.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { + return _this36.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { name: name, position: channel.position, topic: topic @@ -1269,12 +1302,12 @@ var InternalClient = (function () { //def setTopic InternalClient.prototype.setChannelPosition = function setChannelPosition(chann) { - var _this36 = this; + var _this37 = this; var position = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; return this.resolver.resolveChannel(chann).then(function (channel) { - return _this36.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { + return _this37.apiRequest("patch", _Constants.Endpoints.CHANNEL(channel.id), true, { name: channel.name, position: position, topic: channel.topic @@ -1309,7 +1342,7 @@ var InternalClient = (function () { }; InternalClient.prototype.createWS = function createWS(url) { - var _this37 = this; + var _this38 = this; var self = this; var client = self.client; @@ -1477,19 +1510,19 @@ var InternalClient = (function () { var server = self.servers.get("id", data.id); if (server) { if (!data.unavailable) { - for (var _iterator6 = server.channels, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref6; + for (var _iterator7 = server.channels, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref7; - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref6 = _iterator6[_i6++]; + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref7 = _iterator7[_i7++]; } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref6 = _i6.value; + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref7 = _i7.value; } - var channel = _ref6; + var channel = _ref7; self.channels.remove(channel); } @@ -1725,7 +1758,7 @@ var InternalClient = (function () { data.id = data.id || user.id; data.avatar = data.avatar || user.avatar; data.discriminator = data.discriminator || user.discriminator; - _this37.email = data.email || _this37.email; + _this38.email = data.email || _this38.email; var presenceUser = new _StructuresUser2["default"](data, client); @@ -1813,19 +1846,19 @@ var InternalClient = (function () { var testtime = new Date().getTime(); - for (var _iterator7 = data.members, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref7; + for (var _iterator8 = data.members, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref8; - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref7 = _iterator7[_i7++]; + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref8 = _iterator8[_i8++]; } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref7 = _i7.value; + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref8 = _i8.value; } - var user = _ref7; + var user = _ref8; server.memberMap[user.user.id] = { roles: user.roles.map(function (pid) { diff --git a/lib/Constants.js b/lib/Constants.js index b69c7c8f4..12a4facde 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -8,6 +8,9 @@ var Endpoints = { LOGIN: API + "/auth/login", LOGOUT: API + "/auth/logout", ME: API + "/users/@me", + ME_SERVER: function ME_SERVER(serverID) { + return Endpoints.ME + "/guilds/" + serverID; + }, GATEWAY: API + "/gateway", USER_CHANNELS: function USER_CHANNELS(userID) { return API + "/users/" + userID + "/channels"; diff --git a/src/Client/Client.js b/src/Client/Client.js index 40cb3760e..1d6e97150 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -662,13 +662,13 @@ export default class Client extends EventEmitter { } /** - * Leaves a Discord Server, alias to `client.leaveServer` + * Deletes a Discord Server * @param {ServerResolvable} server the server to leave * @param {function(err: Error)} [callback] callback to the method * @returns {Promise} resolves null if successful, otherwise rejects with an error. */ deleteServer(server, callback = (/*err, {}*/) => { }) { - return this.internal.leaveServer(server) + return this.internal.deleteServer(server) .then(dataCallback(callback), errorCallback(callback)); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index bec5f6469..5cf3f4448 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -319,6 +319,24 @@ export default class InternalClient { return Promise.reject(new Error("server did not resolve")); } + return this.apiRequest("del", Endpoints.ME_SERVER(server.id), true) + .then(() => { + // remove channels of server then the server + for (var chan of server.channels) { + this.channels.remove(chan); + } + // remove server + this.servers.remove(server); + }); + } + + //def deleteServer + deleteServer(srv) { + var server = this.resolver.resolveServer(srv); + if (!server) { + return Promise.reject(new Error("server did not resolve")); + } + return this.apiRequest("del", Endpoints.SERVER(server.id), true) .then(() => { // remove channels of server then the server diff --git a/src/Constants.js b/src/Constants.js index 79cb74abe..c688594ba 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -6,6 +6,7 @@ export const Endpoints = { LOGIN: `${API}/auth/login`, LOGOUT: `${API}/auth/logout`, ME: `${API}/users/@me`, + ME_SERVER: (serverID) => `${Endpoints.ME}/guilds/${serverID}`, GATEWAY: `${API}/gateway`, USER_CHANNELS: (userID) => `${API}/users/${userID}/channels`, AVATAR : (userID, avatar) => `${API}/users/${userID}/avatars/${avatar}.jpg`,