mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 03:23:29 +01:00
Added permission functions for client in docs
This commit is contained in:
@@ -55,9 +55,9 @@ author = u'hydrabolt'
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '3.6'
|
version = '3.10'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '3.6.1'
|
release = '3.10.1'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|||||||
@@ -359,6 +359,122 @@ Sets the topic of the specified channel
|
|||||||
|
|
||||||
- **error** - An error if one occurred, otherwise it is null.
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
|
||||||
|
createRole(server, data, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Creates a role (or set of permissions) in a given server.
|
||||||
|
|
||||||
|
- **server** - A `Server Resolvable`_ where the role should be created.
|
||||||
|
- **data** - An `Object` containing values available in any `ServerPermissions`_ object.
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
- **role** - If no errors occurred, this will be a `ServerPermissions`_ object representing the created role.
|
||||||
|
|
||||||
|
.. code-block:: js
|
||||||
|
|
||||||
|
// example usage:
|
||||||
|
|
||||||
|
bot.createRole(server, {
|
||||||
|
name : "My Role",
|
||||||
|
color : Discord.Colors.RED,
|
||||||
|
sendMessages : false
|
||||||
|
});
|
||||||
|
|
||||||
|
createRoleIfNotExists(server, data, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Identical to createRole_ but it only executes if a role with the same name, permissions and color exists in the given server.
|
||||||
|
|
||||||
|
- **server** - A `Server Resolvable`_ where the role should be created.
|
||||||
|
- **data** - An `Object` containing values available in any `ServerPermissions`_ object.
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
- **role** - If no errors occurred, this will be a `ServerPermissions`_ object representing the created role.
|
||||||
|
|
||||||
|
.. code-block:: js
|
||||||
|
|
||||||
|
// example usage:
|
||||||
|
|
||||||
|
bot.createRoleIfNotExists(server, {
|
||||||
|
name : "My Role",
|
||||||
|
color : Discord.Colors.RED,
|
||||||
|
sendMessages : false
|
||||||
|
}) // would execute, role doesn't exist in the server yet
|
||||||
|
|
||||||
|
.then(function(){
|
||||||
|
bot.createRoleIfNotExists(server, {
|
||||||
|
name : "My Role",
|
||||||
|
color : Discord.Colors.RED,
|
||||||
|
sendMessages : false
|
||||||
|
}); // would not execute, role already exists
|
||||||
|
});
|
||||||
|
|
||||||
|
.. warning :: Due to the asynchronous nature of the code, if you ran the same code twice without putting one in a callback, both would execute as at the point of execution, neither are existant.
|
||||||
|
|
||||||
|
deleteRole(role, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Deletes a Role
|
||||||
|
|
||||||
|
- **role** - The `ServerPermissions` that you want to delete.
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
|
||||||
|
updateRole(role, data, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Updates a role existing in a server to have new permissions, order, color, name or to have `hoist` (whether it should be its own category in the users list)
|
||||||
|
|
||||||
|
- **role** - A `ServerPermissions`_ which represents the role to edit.
|
||||||
|
- **data** - An `Object` containing values available in any `ServerPermissions`_ object.
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
- **role** - If no errors occurred, this will be a `ServerPermissions`_ object representing the edited role.
|
||||||
|
|
||||||
|
.. code-block:: js
|
||||||
|
|
||||||
|
bot.updateRole(alreadyExistantRole, {
|
||||||
|
name : "this is a new role name"
|
||||||
|
});
|
||||||
|
|
||||||
|
addMemberToRole(member, role, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Adds a Member to a Server Role.
|
||||||
|
|
||||||
|
- **member** - The `Member`_ you would like to add to the role.
|
||||||
|
- **role** - The `ServerPermissions`_ (or role) you would like to add the member to.
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
|
||||||
|
removeMemberFromRole(member, role, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Removes a Member from a Server Role.
|
||||||
|
|
||||||
|
- **member** - The `Member`_ you would like to remove from the role.
|
||||||
|
- **role** - The `ServerPermissions`_ (or role) you would like to remove the member from.
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
|
||||||
|
overwritePermissions(channel, role, overwrites, `callback`)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Overrides/overwrites a role in a specific channel.
|
||||||
|
|
||||||
|
- **channel** - A `Channel Resolvable`_ where the permissions should be overridden.
|
||||||
|
- **role** - A `ServerPermissions`_ role that you want to override
|
||||||
|
- **overwrites** - An `Object` containing any values in a `ChannelPermissions`_
|
||||||
|
- **callback** - A `function` that can take the following parameters:
|
||||||
|
|
||||||
|
- **error** - An error if one occurred, otherwise it is null.
|
||||||
|
|
||||||
getUser(key, value)
|
getUser(key, value)
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@@ -620,3 +736,5 @@ Called when a WebSocket message is received and it gives you the message.
|
|||||||
.. _Discord Game ID : https://raw.githubusercontent.com/hydrabolt/discord.js/master/ref/gameMap.json
|
.. _Discord Game ID : https://raw.githubusercontent.com/hydrabolt/discord.js/master/ref/gameMap.json
|
||||||
|
|
||||||
.. _EventEmitter : https://nodejs.org/api/events.html#events_class_events_eventemitter
|
.. _EventEmitter : https://nodejs.org/api/events.html#events_class_events_eventemitter
|
||||||
|
|
||||||
|
.. _createRole : #createRole
|
||||||
@@ -818,20 +818,25 @@ var Client = (function (_EventEmitter) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Client.prototype.updateRole = function updateRole(server, role) {
|
Client.prototype.updateRole = function updateRole(role, data) {
|
||||||
var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, perm) {} : arguments[2];
|
var cb = arguments.length <= 2 || arguments[2] === undefined ? function (err, perm) {} : arguments[2];
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
server = self.resolveServerID(server);
|
var server = role.server.id;
|
||||||
|
|
||||||
|
var modRole = role;
|
||||||
|
for (var key in data) {
|
||||||
|
modRole[key] = data[key];
|
||||||
|
}
|
||||||
|
|
||||||
request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({
|
request.patch(Endpoints.SERVERS + "/" + server + "/roles/" + role.id).set("authorization", self.token).send({
|
||||||
color: role.color,
|
color: modRole.color,
|
||||||
hoist: role.hoist,
|
hoist: modRole.hoist,
|
||||||
name: role.name,
|
name: modRole.name,
|
||||||
permissions: role.packed
|
permissions: modRole.packed
|
||||||
}).end(function (err, res) {
|
}).end(function (err, res) {
|
||||||
if (err) {
|
if (err) {
|
||||||
cb(err);
|
cb(err);
|
||||||
@@ -944,27 +949,37 @@ var Client = (function (_EventEmitter) {
|
|||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
var data;
|
function dieerror(e) {
|
||||||
|
reject(e);
|
||||||
if (role instanceof ServerPermissions || role.type === "role") {
|
callback(e);
|
||||||
data = ad(updatedStuff);
|
|
||||||
data.id = role.id;
|
|
||||||
data.type = "role";
|
|
||||||
} else {
|
|
||||||
|
|
||||||
data = ad(updatedStuff);
|
|
||||||
data.id = role.id;
|
|
||||||
data.type = "member";
|
|
||||||
}
|
}
|
||||||
request.put(Endpoints.CHANNELS + "/" + channel.id + "/permissions/" + role.id).set("authorization", self.token).send(data).end(function (err) {
|
|
||||||
if (err) {
|
self.resolveDestination(channel).then(next)["catch"](dieerror);
|
||||||
reject(err);
|
|
||||||
callback(err);
|
function next(channelID) {
|
||||||
|
|
||||||
|
var data;
|
||||||
|
|
||||||
|
if (role instanceof ServerPermissions || role.type === "role") {
|
||||||
|
data = ad(updatedStuff);
|
||||||
|
data.id = role.id;
|
||||||
|
data.type = "role";
|
||||||
} else {
|
} else {
|
||||||
resolve();
|
|
||||||
callback();
|
data = ad(updatedStuff);
|
||||||
|
data.id = role.id;
|
||||||
|
data.type = "member";
|
||||||
}
|
}
|
||||||
});
|
request.put(Endpoints.CHANNELS + "/" + channelID + "/permissions/" + role.id).set("authorization", self.token).send(data).end(function (err) {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
callback(err);
|
||||||
|
} else {
|
||||||
|
resolve();
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function ad(data) {
|
function ad(data) {
|
||||||
|
|||||||
252
src/Client.js
252
src/Client.js
@@ -21,9 +21,9 @@ var defaultOptions = {
|
|||||||
queue: false
|
queue: false
|
||||||
}
|
}
|
||||||
|
|
||||||
class Client extends EventEmitter{
|
class Client extends EventEmitter {
|
||||||
|
|
||||||
constructor(options = defaultOptions, token = undefined){
|
constructor(options = defaultOptions, token = undefined) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
When created, if a token is specified the Client will
|
When created, if a token is specified the Client will
|
||||||
@@ -35,7 +35,7 @@ class Client extends EventEmitter{
|
|||||||
this.options = options;
|
this.options = options;
|
||||||
this.options.compress = options.compress;
|
this.options.compress = options.compress;
|
||||||
|
|
||||||
if(this.options.compress){
|
if (this.options.compress) {
|
||||||
// only require zlib if necessary
|
// only require zlib if necessary
|
||||||
zlib = require("zlib");
|
zlib = require("zlib");
|
||||||
}
|
}
|
||||||
@@ -179,11 +179,11 @@ class Client extends EventEmitter{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
banMember(user, server, daysToDeleteMessage=1, cb=function(err){}){
|
banMember(user, server, daysToDeleteMessage = 1, cb = function (err) { }) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function(resolve, reject){
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
var serverID = self.resolveServerID(server);
|
var serverID = self.resolveServerID(server);
|
||||||
var memberID = self.resolveUserID(user);
|
var memberID = self.resolveUserID(user);
|
||||||
@@ -191,11 +191,11 @@ class Client extends EventEmitter{
|
|||||||
request
|
request
|
||||||
.put(`${Endpoints.SERVERS}/${serverID}/bans/${memberID}?delete-message-days=${daysToDeleteMessage}`)
|
.put(`${Endpoints.SERVERS}/${serverID}/bans/${memberID}?delete-message-days=${daysToDeleteMessage}`)
|
||||||
.set("authorization", self.token)
|
.set("authorization", self.token)
|
||||||
.end(function(err, res){
|
.end(function (err, res) {
|
||||||
cb(err);
|
cb(err);
|
||||||
if(err){
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
}else{
|
} else {
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -535,14 +535,14 @@ class Client extends EventEmitter{
|
|||||||
var mentions = [];
|
var mentions = [];
|
||||||
for (var mention of message.mentions) {
|
for (var mention of message.mentions) {
|
||||||
var user = self.addUser(mention);
|
var user = self.addUser(mention);
|
||||||
if(channel.server)
|
if (channel.server)
|
||||||
mentions.push(channel.server.getMember("id", user.id) || user);
|
mentions.push(channel.server.getMember("id", user.id) || user);
|
||||||
else
|
else
|
||||||
mentions.push(user);
|
mentions.push(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
var authorRaw = self.addUser(message.author), author;
|
var authorRaw = self.addUser(message.author), author;
|
||||||
if(channel.server)
|
if (channel.server)
|
||||||
author = channel.server.getMember("id", authorRaw.id) || authorRaw;
|
author = channel.server.getMember("id", authorRaw.id) || authorRaw;
|
||||||
else
|
else
|
||||||
author = authorRaw;
|
author = authorRaw;
|
||||||
@@ -713,11 +713,11 @@ class Client extends EventEmitter{
|
|||||||
if (typeof options === "function") {
|
if (typeof options === "function") {
|
||||||
// options is a function, which means the developer wants this to be the callback
|
// options is a function, which means the developer wants this to be the callback
|
||||||
callback = options;
|
callback = options;
|
||||||
options = {tts : false};
|
options = { tts: false };
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!options){
|
if (!options) {
|
||||||
options = {tts:false};
|
options = { tts: false };
|
||||||
}
|
}
|
||||||
|
|
||||||
message = premessage + resolveMessage(message);
|
message = premessage + resolveMessage(message);
|
||||||
@@ -785,29 +785,29 @@ class Client extends EventEmitter{
|
|||||||
return prom;
|
return prom;
|
||||||
}
|
}
|
||||||
|
|
||||||
createRoleIfNotExists(dest, data, cb = function(err, role){}){
|
createRoleIfNotExists(dest, data, cb = function (err, role) { }) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function(resolve, reject){
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
var serverID = self.resolveServerID(dest);
|
var serverID = self.resolveServerID(dest);
|
||||||
var server = self.getServer("id", serverID);
|
var server = self.getServer("id", serverID);
|
||||||
|
|
||||||
var baseRole = new ServerPermissions({}, server);
|
var baseRole = new ServerPermissions({}, server);
|
||||||
for(var key in data){
|
for (var key in data) {
|
||||||
baseRole[key] = data[key];
|
baseRole[key] = data[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var role of server.roles){
|
for (var role of server.roles) {
|
||||||
if(baseRole.name == role.name && baseRole.packed == role.packed && baseRole.color == role.color){
|
if (baseRole.name == role.name && baseRole.packed == role.packed && baseRole.color == role.color) {
|
||||||
resolve(role);
|
resolve(role);
|
||||||
cb(null, role);
|
cb(null, role);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.createRole(dest, data).then( (role) => {
|
self.createRole(dest, data).then((role) => {
|
||||||
cb(null, role);
|
cb(null, role);
|
||||||
resolve(role);
|
resolve(role);
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
@@ -867,22 +867,27 @@ class Client extends EventEmitter{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRole(server, role, cb = function (err, perm) { }) {
|
updateRole(role, data, cb = function (err, perm) { }) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
server = self.resolveServerID(server);
|
var server = role.server.id;
|
||||||
|
|
||||||
|
var modRole = role;
|
||||||
|
for (var key in data) {
|
||||||
|
modRole[key] = data[key];
|
||||||
|
}
|
||||||
|
|
||||||
request
|
request
|
||||||
.patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`)
|
.patch(`${Endpoints.SERVERS}/${server}/roles/${role.id}`)
|
||||||
.set("authorization", self.token)
|
.set("authorization", self.token)
|
||||||
.send({
|
.send({
|
||||||
color: role.color,
|
color: modRole.color,
|
||||||
hoist: role.hoist,
|
hoist: modRole.hoist,
|
||||||
name: role.name,
|
name: modRole.name,
|
||||||
permissions: role.packed
|
permissions: modRole.packed
|
||||||
})
|
})
|
||||||
.end(function (err, res) {
|
.end(function (err, res) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -901,21 +906,21 @@ class Client extends EventEmitter{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteRole(role, callback = function(err){}){
|
deleteRole(role, callback = function (err) { }) {
|
||||||
|
|
||||||
// role is a ServerPermissions
|
// role is a ServerPermissions
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function(resolve, reject){
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
request
|
request
|
||||||
.del(`${Endpoints.SERVERS}/${role.server.id}/roles/${role.id}`)
|
.del(`${Endpoints.SERVERS}/${role.server.id}/roles/${role.id}`)
|
||||||
.set("authorization", self.token)
|
.set("authorization", self.token)
|
||||||
.end(function(err){
|
.end(function (err) {
|
||||||
if(err){
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
callback(err);
|
callback(err);
|
||||||
}else{
|
} else {
|
||||||
resolve();
|
resolve();
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
@@ -929,36 +934,36 @@ class Client extends EventEmitter{
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
try{
|
try {
|
||||||
var serverId = self.resolveServerID(member.server);
|
var serverId = self.resolveServerID(member.server);
|
||||||
var memberId = self.resolveUserID(member);
|
var memberId = self.resolveUserID(member);
|
||||||
|
|
||||||
var acServer = self.getServer("id", serverId);
|
var acServer = self.getServer("id", serverId);
|
||||||
var acMember = acServer.getMember("id", memberId);
|
var acMember = acServer.getMember("id", memberId);
|
||||||
|
|
||||||
if(acMember.rawRoles.indexOf(role.id) !== -1){
|
if (acMember.rawRoles.indexOf(role.id) !== -1) {
|
||||||
// user already has role
|
// user already has role
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
request
|
request
|
||||||
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
|
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
|
||||||
.set("authorization", self.token)
|
.set("authorization", self.token)
|
||||||
.send({
|
.send({
|
||||||
roles: acMember.rawRoles.concat(role.id)
|
roles: acMember.rawRoles.concat(role.id)
|
||||||
})
|
})
|
||||||
.end(function (err) {
|
.end(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
callback(err);
|
callback(err);
|
||||||
} else {
|
} else {
|
||||||
acMember.addRole(role);
|
acMember.addRole(role);
|
||||||
resolve();
|
resolve();
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}catch(e){
|
} catch (e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -968,78 +973,87 @@ class Client extends EventEmitter{
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
try{
|
try {
|
||||||
var serverId = self.resolveServerID(member.server);
|
var serverId = self.resolveServerID(member.server);
|
||||||
var memberId = self.resolveUserID(member);
|
var memberId = self.resolveUserID(member);
|
||||||
|
|
||||||
var acServer = self.getServer("id", serverId);
|
var acServer = self.getServer("id", serverId);
|
||||||
var acMember = acServer.getMember("id", memberId);
|
var acMember = acServer.getMember("id", memberId);
|
||||||
|
|
||||||
if(~acMember.rawRoles.indexOf(role.id)){
|
if (~acMember.rawRoles.indexOf(role.id)) {
|
||||||
acMember.removeRole(role);
|
acMember.removeRole(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
request
|
request
|
||||||
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
|
.patch(`https://discordapp.com/api/guilds/${serverId}/members/${memberId}`)
|
||||||
.set("authorization", self.token)
|
.set("authorization", self.token)
|
||||||
.send({
|
.send({
|
||||||
roles: acMember.rawRoles
|
roles: acMember.rawRoles
|
||||||
})
|
})
|
||||||
.end(function (err) {
|
.end(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
callback(err);
|
callback(err);
|
||||||
} else {
|
} else {
|
||||||
acMember.addRole(role);
|
acMember.addRole(role);
|
||||||
resolve();
|
resolve();
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}catch(e){
|
} catch (e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
overwritePermissions(channel, role, updatedStuff, callback=function(err){}){
|
overwritePermissions(channel, role, updatedStuff, callback = function (err) { }) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
return new Promise(function(resolve, reject){
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
var data;
|
|
||||||
|
|
||||||
if( role instanceof ServerPermissions || role.type === "role" ){
|
|
||||||
data = ad(updatedStuff);
|
|
||||||
data.id = role.id;
|
|
||||||
data.type = "role";
|
|
||||||
}else{
|
|
||||||
|
|
||||||
data = ad(updatedStuff);
|
|
||||||
data.id = role.id;
|
|
||||||
data.type = "member";
|
|
||||||
|
|
||||||
|
function dieerror(e) {
|
||||||
|
reject(e);
|
||||||
|
callback(e);
|
||||||
}
|
}
|
||||||
request
|
|
||||||
.put(`${Endpoints.CHANNELS}/${channel.id}/permissions/${role.id}`)
|
|
||||||
.set("authorization", self.token)
|
|
||||||
.send(data)
|
|
||||||
.end(function(err){
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
callback(err);
|
|
||||||
} else {
|
|
||||||
resolve();
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
self.resolveDestination(channel).then(next).catch(dieerror);
|
||||||
|
|
||||||
|
function next(channelID) {
|
||||||
|
|
||||||
|
var data;
|
||||||
|
|
||||||
|
if (role instanceof ServerPermissions || role.type === "role") {
|
||||||
|
data = ad(updatedStuff);
|
||||||
|
data.id = role.id;
|
||||||
|
data.type = "role";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
data = ad(updatedStuff);
|
||||||
|
data.id = role.id;
|
||||||
|
data.type = "member";
|
||||||
|
|
||||||
|
}
|
||||||
|
request
|
||||||
|
.put(`${Endpoints.CHANNELS}/${channelID}/permissions/${role.id}`)
|
||||||
|
.set("authorization", self.token)
|
||||||
|
.send(data)
|
||||||
|
.end(function (err) {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
callback(err);
|
||||||
|
} else {
|
||||||
|
resolve();
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function ad(data){
|
function ad(data) {
|
||||||
var allow = 0, disallow = 0;
|
var allow = 0, disallow = 0;
|
||||||
function bitit(value, position){
|
function bitit(value, position) {
|
||||||
if (value) {
|
if (value) {
|
||||||
allow |= (1 << position);
|
allow |= (1 << position);
|
||||||
} else {
|
} else {
|
||||||
@@ -1047,8 +1061,8 @@ class Client extends EventEmitter{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var perm in data){
|
for (var perm in data) {
|
||||||
switch(perm){
|
switch (perm) {
|
||||||
case "canCreateInstantInvite":
|
case "canCreateInstantInvite":
|
||||||
bitit(data[perm], 0);
|
bitit(data[perm], 0);
|
||||||
break;
|
break;
|
||||||
@@ -1136,8 +1150,8 @@ class Client extends EventEmitter{
|
|||||||
//message
|
//message
|
||||||
this.websocket.onmessage = function (e) {
|
this.websocket.onmessage = function (e) {
|
||||||
|
|
||||||
if(e.type === "Binary"){
|
if (e.type === "Binary") {
|
||||||
if(!zlib)
|
if (!zlib)
|
||||||
zlib = require("zlib");
|
zlib = require("zlib");
|
||||||
|
|
||||||
e.data = zlib.inflateSync(e.data).toString();
|
e.data = zlib.inflateSync(e.data).toString();
|
||||||
@@ -1191,7 +1205,7 @@ class Client extends EventEmitter{
|
|||||||
var channel = self.getChannel("id", data.channel_id);
|
var channel = self.getChannel("id", data.channel_id);
|
||||||
for (var mention of data.mentions) {
|
for (var mention of data.mentions) {
|
||||||
var user = self.addUser(mention);
|
var user = self.addUser(mention);
|
||||||
if(channel.server)
|
if (channel.server)
|
||||||
mentions.push(channel.server.getMember("id", user.id) || user);
|
mentions.push(channel.server.getMember("id", user.id) || user);
|
||||||
else
|
else
|
||||||
mentions.push(user);
|
mentions.push(user);
|
||||||
@@ -1240,7 +1254,7 @@ class Client extends EventEmitter{
|
|||||||
|
|
||||||
for (var mention of data.mentions) {
|
for (var mention of data.mentions) {
|
||||||
var user = self.addUser(mention);
|
var user = self.addUser(mention);
|
||||||
if(channel.server)
|
if (channel.server)
|
||||||
mentions.push(channel.server.getMember("id", user.id) || user);
|
mentions.push(channel.server.getMember("id", user.id) || user);
|
||||||
else
|
else
|
||||||
mentions.push(user);
|
mentions.push(user);
|
||||||
@@ -1679,7 +1693,7 @@ class Client extends EventEmitter{
|
|||||||
"$referrer": "",
|
"$referrer": "",
|
||||||
"$referring_domain": ""
|
"$referring_domain": ""
|
||||||
},
|
},
|
||||||
compress : self.options.compress
|
compress: self.options.compress
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.websocket.send(JSON.stringify(data));
|
this.websocket.send(JSON.stringify(data));
|
||||||
@@ -1770,14 +1784,14 @@ class Client extends EventEmitter{
|
|||||||
|
|
||||||
for (var mention of data.mentions) {
|
for (var mention of data.mentions) {
|
||||||
var user = self.addUser(mention);
|
var user = self.addUser(mention);
|
||||||
if(channel.server)
|
if (channel.server)
|
||||||
mentions.push(channel.server.getMember("id", user.id) || user);
|
mentions.push(channel.server.getMember("id", user.id) || user);
|
||||||
else
|
else
|
||||||
mentions.push(user);
|
mentions.push(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel) {
|
if (channel) {
|
||||||
var msg = channel.addMessage(new Message(data, channel, mentions, {id:data.author.id}));
|
var msg = channel.addMessage(new Message(data, channel, mentions, { id: data.author.id }));
|
||||||
resolve(msg);
|
resolve(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user