mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 11:33:30 +01:00
serverChannel.permissionsOf() can take a role
This commit is contained in:
@@ -40,12 +40,12 @@ Server_ the channel belongs to.
|
|||||||
Functions
|
Functions
|
||||||
---------
|
---------
|
||||||
|
|
||||||
permissionsOf(user)
|
permissionsOf(userOrRole)
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
**Aliases:** permsOf
|
**Aliases:** permsOf
|
||||||
|
|
||||||
Returns a ChannelPermissions_ object of a user's permissions in that channel.
|
Returns a ChannelPermissions_ object of a user or role's permissions in that channel.
|
||||||
|
|
||||||
mention()
|
mention()
|
||||||
~~~~~~~~~
|
~~~~~~~~~
|
||||||
|
|||||||
@@ -47,15 +47,15 @@ var ServerChannel = (function (_Channel) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerChannel.prototype.permissionsOf = function permissionsOf(user) {
|
ServerChannel.prototype.permissionsOf = function permissionsOf(userOrRole) {
|
||||||
user = this.client.internal.resolver.resolveUser(user);
|
userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
|
||||||
if (user) {
|
if (userOrRole) {
|
||||||
if (this.server.ownerID === user.id) {
|
if (this.server.ownerID === userOrRole.id) {
|
||||||
return new _ChannelPermissions2["default"](4294967295);
|
return new _ChannelPermissions2["default"](4294967295);
|
||||||
}
|
}
|
||||||
var everyoneRole = this.server.roles.get("id", this.server.id);
|
var everyoneRole = this.server.roles.get("id", this.server.id);
|
||||||
|
|
||||||
var userRoles = [everyoneRole].concat(this.server.rolesOf(user) || []);
|
var userRoles = [everyoneRole].concat(this.server.rolesOf(userOrRole) || []);
|
||||||
var userRolesID = userRoles.filter(function (v) {
|
var userRolesID = userRoles.filter(function (v) {
|
||||||
return !!v;
|
return !!v;
|
||||||
}).map(function (v) {
|
}).map(function (v) {
|
||||||
@@ -65,7 +65,7 @@ var ServerChannel = (function (_Channel) {
|
|||||||
memberOverwrites = [];
|
memberOverwrites = [];
|
||||||
|
|
||||||
this.permissionOverwrites.forEach(function (overwrite) {
|
this.permissionOverwrites.forEach(function (overwrite) {
|
||||||
if (overwrite.type === "member" && overwrite.id === user.id) {
|
if (overwrite.type === "member" && overwrite.id === userOrRole.id) {
|
||||||
memberOverwrites.push(overwrite);
|
memberOverwrites.push(overwrite);
|
||||||
} else if (overwrite.type === "role" && ~userRolesID.indexOf(overwrite.id)) {
|
} else if (overwrite.type === "role" && ~userRolesID.indexOf(overwrite.id)) {
|
||||||
roleOverwrites.push(overwrite);
|
roleOverwrites.push(overwrite);
|
||||||
@@ -115,7 +115,19 @@ var ServerChannel = (function (_Channel) {
|
|||||||
|
|
||||||
return new _ChannelPermissions2["default"](permissions);
|
return new _ChannelPermissions2["default"](permissions);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
userOrRole = this.client.internal.resolver.resolveRole(userOrRole);
|
||||||
|
if (userOrRole) {
|
||||||
|
var permissions = this.server.roles.get("id", this.server.id).permissions | userOrRole.permissions;
|
||||||
|
var overwrite = this.permissionOverwrites.get("id", this.server.id);
|
||||||
|
permissions = permissions & ~overwrite.deny | overwrite.allow;
|
||||||
|
overwrite = this.permissionOverwrites.get("id", userOrRole.id);
|
||||||
|
if (overwrite) {
|
||||||
|
permissions = permissions & ~overwrite.deny | overwrite.allow;
|
||||||
|
}
|
||||||
|
return new _ChannelPermissions2["default"](permissions);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -21,20 +21,20 @@ export default class ServerChannel extends Channel{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
permissionsOf(user){
|
permissionsOf(userOrRole){
|
||||||
user = this.client.internal.resolver.resolveUser(user);
|
userOrRole = this.client.internal.resolver.resolveUser(userOrRole);
|
||||||
if (user) {
|
if (userOrRole) {
|
||||||
if (this.server.ownerID === user.id) {
|
if (this.server.ownerID === userOrRole.id) {
|
||||||
return new ChannelPermissions(4294967295);
|
return new ChannelPermissions(4294967295);
|
||||||
}
|
}
|
||||||
var everyoneRole = this.server.roles.get("id", this.server.id);
|
var everyoneRole = this.server.roles.get("id", this.server.id);
|
||||||
|
|
||||||
var userRoles = [everyoneRole].concat(this.server.rolesOf(user) || []);
|
var userRoles = [everyoneRole].concat(this.server.rolesOf(userOrRole) || []);
|
||||||
var userRolesID = userRoles.filter((v) => !!v).map((v) => v.id);
|
var userRolesID = userRoles.filter((v) => !!v).map((v) => v.id);
|
||||||
var roleOverwrites = [], memberOverwrites = [];
|
var roleOverwrites = [], memberOverwrites = [];
|
||||||
|
|
||||||
this.permissionOverwrites.forEach((overwrite) => {
|
this.permissionOverwrites.forEach((overwrite) => {
|
||||||
if (overwrite.type === "member" && overwrite.id === user.id) {
|
if (overwrite.type === "member" && overwrite.id === userOrRole.id) {
|
||||||
memberOverwrites.push(overwrite);
|
memberOverwrites.push(overwrite);
|
||||||
} else if (overwrite.type === "role" && ~userRolesID.indexOf(overwrite.id)) {
|
} else if (overwrite.type === "role" && ~userRolesID.indexOf(overwrite.id)) {
|
||||||
roleOverwrites.push(overwrite);
|
roleOverwrites.push(overwrite);
|
||||||
@@ -58,8 +58,20 @@ export default class ServerChannel extends Channel{
|
|||||||
|
|
||||||
return new ChannelPermissions(permissions);
|
return new ChannelPermissions(permissions);
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
return null;
|
userOrRole = this.client.internal.resolver.resolveRole(userOrRole);
|
||||||
|
if (userOrRole) {
|
||||||
|
var permissions = this.server.roles.get("id", this.server.id).permissions | userOrRole.permissions;
|
||||||
|
var overwrite = this.permissionOverwrites.get("id", this.server.id);
|
||||||
|
permissions = (permissions & ~overwrite.deny) | overwrite.allow;
|
||||||
|
overwrite = this.permissionOverwrites.get("id", userOrRole.id);
|
||||||
|
if (overwrite) {
|
||||||
|
permissions = (permissions & ~overwrite.deny) | overwrite.allow;
|
||||||
|
}
|
||||||
|
return new ChannelPermissions(permissions);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user