diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 4e0c79cdf..4abbb7b36 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -750,6 +750,17 @@ var Client = (function (_EventEmitter) { return this.internal.undeafenMember(user, server).then(dataCallback(callback), errorCallback(callback)); }; + // def setNickname + + Client.prototype.setNickname = function setNickname(server, nick, user) { + var callback = arguments.length <= 3 || arguments[3] === undefined ? function () /*err, {}*/{} : arguments[3]; + + if (!user) { + user = this.user; + } + return this.internal.setNickname(server, nick, user).then(dataCallback(callback), errorCallback(callback)); + }; + // def createRole Client.prototype.createRole = function createRole(server) { diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 81a0adb74..3c5b82cc5 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -258,15 +258,9 @@ var InternalClient = (function () { _this2.setup(); // Check whether the email is set (if not, only a token has been used for login) - if (_this2.email) { - _this2.login(_this2.email, _this2.password)["catch"](function () { - return _this2.disconnected(true); - }); - } else { - _this2.loginWithToken(_this2.token)["catch"](function () { - return _this2.disconnected(true); - }); - } + _this2.loginWithToken(_this2.token, _this2.email, _this2.password)["catch"](function () { + return _this2.disconnected(true); + }); }, this.autoReconnectInterval); } @@ -1030,6 +1024,15 @@ var InternalClient = (function () { return this.apiRequest("patch", _Constants.Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id, true, { deaf: false }); }; + // def setNickname + + InternalClient.prototype.setNickname = function setNickname(server, nick, user) { + nick = nick || ""; + user = this.resolver.resolveUser(user); + server = this.resolver.resolveServer(server); + return this.apiRequest("patch", _Constants.Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id, true, { nick: nick }); + }; + // def createRole InternalClient.prototype.createRole = function createRole(server, data) { @@ -1381,24 +1384,22 @@ var InternalClient = (function () { this.idleStatus = this.idleStatus || null; //undefined } - this.game = game === null ? null : game || this.game; + this.game = game === null ? null : !game ? this.game || null : { + name: game + }; var packet = { op: 3, d: { idle_since: this.idleStatus, - game: { - name: this.game - } + game: this.game } }; this.sendWS(packet); this.user.status = this.idleStatus ? "idle" : "online"; - this.user.game = { - name: this.game - }; + this.user.game = this.game; return Promise.resolve(); }; @@ -2028,10 +2029,11 @@ var InternalClient = (function () { return server.roles.get("id", pid); }), mute: false, - self_mute: false, + selfMute: false, deaf: false, - self_deaf: false, - joinedAt: Date.parse(data.joined_at) + selfDeaf: false, + joinedAt: Date.parse(data.joined_at), + nick: data.nick }; server.memberCount++; @@ -2090,9 +2092,10 @@ var InternalClient = (function () { return server.roles.get("id", pid); }); server.memberMap[data.user.id].mute = data.mute; - server.memberMap[data.user.id].self_mute = data.self_mute; + server.memberMap[data.user.id].selfMute = data.self_mute; server.memberMap[data.user.id].deaf = data.deaf; - server.memberMap[data.user.id].self_deaf = data.self_deaf; + server.memberMap[data.user.id].selfDeaf = data.self_deaf; + server.memberMap[data.user.id].nick = data.nick; client.emit("serverMemberUpdated", server, user); } else { client.emit("warn", "server member removed but user doesn't exist in cache"); @@ -2257,10 +2260,11 @@ var InternalClient = (function () { return server.roles.get("id", pid); }), mute: user.mute, - self_mute: false, + selfMute: false, deaf: user.deaf, - self_deaf: false, - joinedAt: Date.parse(user.joined_at) + selfDeaf: false, + joinedAt: Date.parse(user.joined_at), + nick: user.nick }; server.members.add(self.users.add(new _StructuresUser2["default"](user.user, client))); } diff --git a/lib/Structures/Server.js b/lib/Structures/Server.js index 968c17cad..0a97cb9ef 100644 --- a/lib/Structures/Server.js +++ b/lib/Structures/Server.js @@ -95,10 +95,11 @@ var Server = (function (_Equality) { return self.roles.get("id", pid); }), mute: dataUser.mute, - self_mute: dataUser.self_mute, + selfMute: dataUser.self_mute, deaf: dataUser.deaf, - self_deaf: dataUser.self_deaf, - joinedAt: Date.parse(dataUser.joined_at) + selfDeaf: dataUser.self_deaf, + joinedAt: Date.parse(dataUser.joined_at), + nick: dataUser.nick }; _this.members.add(client.internal.users.add(new _User2["default"](dataUser.user, client))); }); @@ -355,6 +356,10 @@ var Server = (function (_Equality) { return this.client.createChannel.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments)); }; + Server.prototype.setNickname = function setNickname() { + return this.client.setNickname.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments)); + }; + Server.prototype.membersWithRole = function membersWithRole(role) { return this.members.filter(function (m) { return m.hasRole(role); diff --git a/src/Client/Client.js b/src/Client/Client.js index c301d0056..4381ecd13 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -810,6 +810,15 @@ export default class Client extends EventEmitter { .then(dataCallback(callback), errorCallback(callback)); } + // def setNickname + setNickname(server, nick, user, callback = (/*err, {}*/) => { }) { + if(!user) { + user = this.user; + } + return this.internal.setNickname(server, nick, user) + .then(dataCallback(callback), errorCallback(callback)); + } + // def createRole createRole(server, data = null, callback = (/*err, role*/) => { }) { if (typeof data === "function") { diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 97da36180..4ddfe90da 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -179,11 +179,7 @@ export default class InternalClient { this.setup(); // Check whether the email is set (if not, only a token has been used for login) - if (this.email) { - this.login(this.email, this.password).catch(() => this.disconnected(true)); - } else { - this.loginWithToken(this.token).catch(() => this.disconnected(true)); - } + this.loginWithToken(this.token, this.email, this.password).catch(() => this.disconnected(true)); }, this.autoReconnectInterval); } @@ -867,6 +863,14 @@ export default class InternalClient { return this.apiRequest("patch", `${Endpoints.SERVER_MEMBERS(server.id)}/${user.id}`, true, { deaf: false }); } + // def setNickname + setNickname(server, nick, user) { + nick = nick || ""; + user = this.resolver.resolveUser(user); + server = this.resolver.resolveServer(server); + return this.apiRequest("patch", `${Endpoints.SERVER_MEMBERS(server.id)}/${user.id}`, true, { nick: nick }); + } + // def createRole createRole(server, data) { server = this.resolver.resolveServer(server); @@ -1161,24 +1165,22 @@ export default class InternalClient { this.idleStatus = this.idleStatus || null; //undefined } - this.game = game === null ? null : game || this.game; + this.game = game === null ? null : !game ? this.game || null : { + name: game + }; var packet = { op: 3, d: { idle_since: this.idleStatus, - game: { - name: this.game - } + game: this.game } }; this.sendWS(packet); this.user.status = this.idleStatus ? "idle" : "online"; - this.user.game = { - name: this.game - }; + this.user.game = this.game; return Promise.resolve(); @@ -1733,10 +1735,11 @@ export default class InternalClient { server.memberMap[data.user.id] = { roles: data.roles.map(pid => server.roles.get("id", pid)), mute: false, - self_mute: false, + selfMute: false, deaf: false, - self_deaf: false, - joinedAt: Date.parse(data.joined_at) + selfDeaf: false, + joinedAt: Date.parse(data.joined_at), + nick: data.nick }; server.memberCount++; @@ -1785,9 +1788,10 @@ export default class InternalClient { server.memberMap[data.user.id] = server.memberMap[data.user.id] || {}; server.memberMap[data.user.id].roles = data.roles.map(pid => server.roles.get("id", pid)); server.memberMap[data.user.id].mute = data.mute; - server.memberMap[data.user.id].self_mute = data.self_mute; + server.memberMap[data.user.id].selfMute = data.self_mute; server.memberMap[data.user.id].deaf = data.deaf; - server.memberMap[data.user.id].self_deaf = data.self_deaf; + server.memberMap[data.user.id].selfDeaf = data.self_deaf; + server.memberMap[data.user.id].nick = data.nick; client.emit("serverMemberUpdated", server, user); } else { client.emit("warn", "server member removed but user doesn't exist in cache"); @@ -1940,10 +1944,11 @@ export default class InternalClient { server.memberMap[user.user.id] = { roles: user.roles.map(pid => server.roles.get("id", pid)), mute: user.mute, - self_mute: false, + selfMute: false, deaf: user.deaf, - self_deaf: false, - joinedAt: Date.parse(user.joined_at) + selfDeaf: false, + joinedAt: Date.parse(user.joined_at), + nick: user.nick }; server.members.add(self.users.add(new User(user.user, client))); } diff --git a/src/Structures/Server.js b/src/Structures/Server.js index 03c345760..90ccbdcd8 100644 --- a/src/Structures/Server.js +++ b/src/Structures/Server.js @@ -58,10 +58,11 @@ export default class Server extends Equality { this.memberMap[dataUser.user.id] = { roles: dataUser.roles.map((pid) => self.roles.get("id", pid)), mute: dataUser.mute, - self_mute: dataUser.self_mute, + selfMute: dataUser.self_mute, deaf: dataUser.deaf, - self_deaf: dataUser.self_deaf, - joinedAt: Date.parse(dataUser.joined_at) + selfDeaf: dataUser.self_deaf, + joinedAt: Date.parse(dataUser.joined_at), + nick: dataUser.nick }; this.members.add(client.internal.users.add(new User(dataUser.user, client))); }); @@ -293,6 +294,10 @@ export default class Server extends Equality { return this.client.createChannel.apply(this.client, reg(this, arguments)); } + setNickname() { + return this.client.setNickname.apply(this.client, reg(this, arguments)); + } + membersWithRole(role) { return this.members.filter(m => m.hasRole(role)); }