mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 20:13:30 +01:00
Let overwritePermissions keep existing permissions
This commit is contained in:
@@ -42,6 +42,10 @@ var _StructuresChannel = require("../Structures/Channel");
|
|||||||
|
|
||||||
var _StructuresChannel2 = _interopRequireDefault(_StructuresChannel);
|
var _StructuresChannel2 = _interopRequireDefault(_StructuresChannel);
|
||||||
|
|
||||||
|
var _StructuresServerChannel = require("../Structures/ServerChannel");
|
||||||
|
|
||||||
|
var _StructuresServerChannel2 = _interopRequireDefault(_StructuresServerChannel);
|
||||||
|
|
||||||
var _StructuresTextChannel = require("../Structures/TextChannel");
|
var _StructuresTextChannel = require("../Structures/TextChannel");
|
||||||
|
|
||||||
var _StructuresTextChannel2 = _interopRequireDefault(_StructuresTextChannel);
|
var _StructuresTextChannel2 = _interopRequireDefault(_StructuresTextChannel);
|
||||||
@@ -1106,43 +1110,41 @@ var InternalClient = (function () {
|
|||||||
var _this30 = this;
|
var _this30 = this;
|
||||||
|
|
||||||
return this.resolver.resolveChannel(channel).then(function (channel) {
|
return this.resolver.resolveChannel(channel).then(function (channel) {
|
||||||
var user;
|
if (channel instanceof _StructuresServerChannel2["default"]) {
|
||||||
if (role instanceof _StructuresUser2["default"]) {
|
return Promise.reject(new Error("Not a server channel"));
|
||||||
user = role;
|
|
||||||
} else {
|
|
||||||
role = _this30.resolver.resolveRole(role);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = {};
|
var data = {
|
||||||
data.allow = 0;
|
allow: 0,
|
||||||
data.deny = 0;
|
deny: 0
|
||||||
|
};
|
||||||
|
|
||||||
updated.allow = updated.allow || [];
|
if (role instanceof _StructuresUser2["default"]) {
|
||||||
updated.deny = updated.deny || [];
|
|
||||||
|
|
||||||
if (role instanceof _StructuresRole2["default"]) {
|
|
||||||
data.id = role.id;
|
data.id = role.id;
|
||||||
data.type = "role";
|
|
||||||
} else if (user) {
|
|
||||||
data.id = user.id;
|
|
||||||
data.type = "member";
|
data.type = "member";
|
||||||
} else {
|
} else {
|
||||||
throw new Error("role incorrect");
|
role = _this30.resolver.resolveRole(role);
|
||||||
|
|
||||||
|
if (!(role instanceof _StructuresRole2["default"])) {
|
||||||
|
return Promise.reject(new Error("Role could not be resolved"));
|
||||||
|
}
|
||||||
|
|
||||||
|
data.id = role.id;
|
||||||
|
data.type = "role";
|
||||||
|
}
|
||||||
|
|
||||||
|
var previousOverwrite = channel.permissionOverwrites.get("id", data.id);
|
||||||
|
|
||||||
|
if (previousOverwrite) {
|
||||||
|
data.allow |= previousOverwrite.allow;
|
||||||
|
data.deny |= previousOverwrite.deny;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var perm in updated) {
|
for (var perm in updated) {
|
||||||
if (updated[perm]) {
|
if (updated[perm]) {
|
||||||
if (perm instanceof String || typeof perm === "string") {
|
data.allow |= _Constants.Permissions[perm] || 0;
|
||||||
data.allow |= _Constants.Permissions[perm] || 0;
|
|
||||||
} else {
|
|
||||||
data.allow |= perm;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (perm instanceof String || typeof perm === "string") {
|
data.deny |= _Constants.Permissions[perm] || 0;
|
||||||
data.deny |= _Constants.Permissions[perm] || 0;
|
|
||||||
} else {
|
|
||||||
data.deny |= perm;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import Resolver from "./Resolver/Resolver";
|
|||||||
|
|
||||||
import User from "../Structures/User";
|
import User from "../Structures/User";
|
||||||
import Channel from "../Structures/Channel";
|
import Channel from "../Structures/Channel";
|
||||||
|
import ServerChannel from "../Structures/ServerChannel";
|
||||||
import TextChannel from "../Structures/TextChannel";
|
import TextChannel from "../Structures/TextChannel";
|
||||||
import VoiceChannel from "../Structures/VoiceChannel";
|
import VoiceChannel from "../Structures/VoiceChannel";
|
||||||
import PMChannel from "../Structures/PMChannel";
|
import PMChannel from "../Structures/PMChannel";
|
||||||
@@ -880,43 +881,41 @@ export default class InternalClient {
|
|||||||
overwritePermissions(channel, role, updated) {
|
overwritePermissions(channel, role, updated) {
|
||||||
return this.resolver.resolveChannel(channel)
|
return this.resolver.resolveChannel(channel)
|
||||||
.then(channel => {
|
.then(channel => {
|
||||||
var user;
|
if (channel instanceof ServerChannel) {
|
||||||
if (role instanceof User) {
|
return Promise.reject(new Error("Not a server channel"));
|
||||||
user = role;
|
|
||||||
} else {
|
|
||||||
role = this.resolver.resolveRole(role);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = {};
|
var data = {
|
||||||
data.allow = 0;
|
allow: 0,
|
||||||
data.deny = 0;
|
deny: 0
|
||||||
|
};
|
||||||
|
|
||||||
updated.allow = updated.allow || [];
|
if (role instanceof User) {
|
||||||
updated.deny = updated.deny || [];
|
|
||||||
|
|
||||||
if (role instanceof Role) {
|
|
||||||
data.id = role.id;
|
data.id = role.id;
|
||||||
data.type = "role";
|
|
||||||
} else if (user) {
|
|
||||||
data.id = user.id;
|
|
||||||
data.type = "member";
|
data.type = "member";
|
||||||
} else {
|
} else {
|
||||||
throw new Error("role incorrect");
|
role = this.resolver.resolveRole(role);
|
||||||
|
|
||||||
|
if (!(role instanceof Role)) {
|
||||||
|
return Promise.reject(new Error("Role could not be resolved"));
|
||||||
|
}
|
||||||
|
|
||||||
|
data.id = role.id;
|
||||||
|
data.type = "role";
|
||||||
|
}
|
||||||
|
|
||||||
|
var previousOverwrite = channel.permissionOverwrites.get("id", data.id);
|
||||||
|
|
||||||
|
if (previousOverwrite) {
|
||||||
|
data.allow |= previousOverwrite.allow;
|
||||||
|
data.deny |= previousOverwrite.deny;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var perm in updated) {
|
for (var perm in updated) {
|
||||||
if (updated[perm]) {
|
if (updated[perm]) {
|
||||||
if (perm instanceof String || typeof perm === "string") {
|
data.allow |= (Permissions[perm] || 0);
|
||||||
data.allow |= (Permissions[perm] || 0);
|
|
||||||
} else {
|
|
||||||
data.allow |= perm;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (perm instanceof String || typeof perm === "string") {
|
data.deny |= (Permissions[perm] || 0);
|
||||||
data.deny |= (Permissions[perm] || 0);
|
|
||||||
} else {
|
|
||||||
data.deny |= perm;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user