diff --git a/docs/docs_client.rst b/docs/docs_client.rst index 8a8ad5d27..40a4f46fd 100644 --- a/docs/docs_client.rst +++ b/docs/docs_client.rst @@ -289,6 +289,16 @@ Removes a user from a server - **callback** - `function` taking the following: - **error** - error if any occurred. +moveMember(user, channel, `callback`) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Moves a user from one voice channel into another. + +- **user** - A `User Resolvable`_ that should be moved +- **channel** - The `Channel Resolvable`_ to move the user to +- **callback** - `function` taking the following: + - **error** - error if any occurred. + createInvite(channel, `options`, `callback`) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 0c01e597f..0853838bc 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -336,6 +336,14 @@ var Client = (function (_EventEmitter) { return this.internal.kickMember(user, server).then(dataCallback(callback), errorCallback(callback)); }; + // def moveMember + + Client.prototype.moveMember = function moveMember(user, channel) { + var callback = arguments.length <= 2 || arguments[2] === undefined ? function () /*err, {}*/{} : arguments[2]; + + return this.internal.moveMember(user, channel).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 3d9598253..56afcb70f 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -708,6 +708,27 @@ var InternalClient = (function () { return this.apiRequest("del", _Constants.Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id, true); }; + // def moveMember + + InternalClient.prototype.moveMember = function moveMember(user, channel) { + var _this19 = this; + + user = this.resolver.resolveUser(user); + return this.resolver.resolveChannel(channel).then(function (channel) { + var server = channel.server; + + // Make sure `channel` is a voice channel + if (channel.type !== "voice") { + throw new Error("Can't moveMember into a non-voice channel"); + } else { + return _this19.apiRequest("patch", _Constants.Endpoints.SERVER_MEMBERS(server.id) + "/" + user.id, true, { channel_id: channel.id }).then(function (res) { + user.voiceChannel = channel; + return res; + }); + } + }); + }; + // def createRole InternalClient.prototype.createRole = function createRole(server, data) { diff --git a/src/Client/Client.js b/src/Client/Client.js index 7ce43d3fa..0192883f8 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -292,6 +292,12 @@ export default class Client extends EventEmitter { .then(dataCallback(callback), errorCallback(callback)); } + // def moveMember + moveMember(user, channel, callback = (/*err, {}*/) => { }) { + return this.internal.moveMember(user, channel) + .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 15a32bde4..5b4513a9d 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -585,6 +585,25 @@ export default class InternalClient { return this.apiRequest("del", `${Endpoints.SERVER_MEMBERS(server.id) }/${user.id}`, true); } + // def moveMember + moveMember(user, channel) { + user = this.resolver.resolveUser(user); + return this.resolver.resolveChannel(channel).then(channel => { + var server = channel.server; + + // Make sure `channel` is a voice channel + if(channel.type !== "voice") { + throw new Error("Can't moveMember into a non-voice channel"); + } else { + return this.apiRequest("patch", `${Endpoints.SERVER_MEMBERS(server.id)}/${user.id}`, true, { channel_id: channel.id }) + .then(res => { + user.voiceChannel = channel; + return res; + }); + } + }); + } + // def createRole createRole(server, data) { server = this.resolver.resolveServer(server);