mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 00:23:30 +01:00
For some reason there's a way to join text channels via the Discord API but not the Discord Client, so this commit prevents the Client from crashing by checking to see if the channels are voice channels.
173 lines
5.6 KiB
JavaScript
173 lines
5.6 KiB
JavaScript
"use strict";
|
|
exports.__esModule = true;
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
var _Constants = require("../Constants");
|
|
|
|
var _UtilArgumentRegulariser = require("../Util/ArgumentRegulariser");
|
|
|
|
/*
|
|
|
|
example data
|
|
|
|
{ position: -1,
|
|
permissions: 36953089,
|
|
name: '@everyone',
|
|
managed: false,
|
|
id: '110007368451915776',
|
|
hoist: false,
|
|
color: 0 }
|
|
*/
|
|
|
|
var DefaultRole = [_Constants.Permissions.createInstantInvite, _Constants.Permissions.readMessages, _Constants.Permissions.readMessageHistory, _Constants.Permissions.sendMessages, _Constants.Permissions.sendTTSMessages, _Constants.Permissions.embedLinks, _Constants.Permissions.attachFiles, _Constants.Permissions.readMessageHistory, _Constants.Permissions.mentionEveryone, _Constants.Permissions.voiceConnect, _Constants.Permissions.voiceSpeak, _Constants.Permissions.voiceUseVAD].reduce(function (previous, current) {
|
|
return previous | current;
|
|
}, 0);
|
|
|
|
var Role = (function () {
|
|
function Role(data, server, client) {
|
|
_classCallCheck(this, Role);
|
|
|
|
this.position = data.position || -1;
|
|
this.permissions = data.permissions || (data.name === "@everyone" ? DefaultRole : 0);
|
|
this.name = data.name || "@everyone";
|
|
this.managed = data.managed || false;
|
|
this.id = data.id;
|
|
this.hoist = data.hoist || false;
|
|
this.color = data.color || 0;
|
|
this.server = server;
|
|
this.client = client;
|
|
}
|
|
|
|
Role.prototype.serialise = function serialise(explicit) {
|
|
var _this = this;
|
|
|
|
var hp = function hp(perm) {
|
|
return _this.hasPermission(perm, explicit);
|
|
};
|
|
|
|
return {
|
|
// general
|
|
createInstantInvite: hp(_Constants.Permissions.createInstantInvite),
|
|
kickMembers: hp(_Constants.Permissions.kickMembers),
|
|
banMembers: hp(_Constants.Permissions.banMembers),
|
|
manageRoles: hp(_Constants.Permissions.manageRoles),
|
|
manageChannels: hp(_Constants.Permissions.manageChannels),
|
|
manageServer: hp(_Constants.Permissions.manageServer),
|
|
// text
|
|
readMessages: hp(_Constants.Permissions.readMessages),
|
|
sendMessages: hp(_Constants.Permissions.sendMessages),
|
|
sendTTSMessages: hp(_Constants.Permissions.sendTTSMessages),
|
|
manageMessages: hp(_Constants.Permissions.manageMessages),
|
|
embedLinks: hp(_Constants.Permissions.embedLinks),
|
|
attachFiles: hp(_Constants.Permissions.attachFiles),
|
|
readMessageHistory: hp(_Constants.Permissions.readMessageHistory),
|
|
mentionEveryone: hp(_Constants.Permissions.mentionEveryone),
|
|
// voice
|
|
voiceConnect: hp(_Constants.Permissions.voiceConnect),
|
|
voiceSpeak: hp(_Constants.Permissions.voiceSpeak),
|
|
voiceMuteMembers: hp(_Constants.Permissions.voiceMuteMembers),
|
|
voiceDeafenMembers: hp(_Constants.Permissions.voiceDeafenMembers),
|
|
voiceMoveMembers: hp(_Constants.Permissions.voiceMoveMembers),
|
|
voiceUseVAD: hp(_Constants.Permissions.voiceUseVAD)
|
|
};
|
|
};
|
|
|
|
Role.prototype.serialize = function serialize() {
|
|
// ;n;
|
|
return this.serialise();
|
|
};
|
|
|
|
Role.prototype.hasPermission = function hasPermission(perm) {
|
|
var explicit = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
|
|
|
|
if (perm instanceof String || typeof perm === "string") {
|
|
perm = _Constants.Permissions[perm];
|
|
}
|
|
if (!perm) {
|
|
return false;
|
|
}
|
|
if (!explicit) {
|
|
// implicit permissions allowed
|
|
if (!!(this.permissions & _Constants.Permissions.manageRoles)) {
|
|
// manageRoles allowed, they have all permissions
|
|
return true;
|
|
}
|
|
}
|
|
// e.g.
|
|
// !!(36953089 & Permissions.manageRoles) = not allowed to manage roles
|
|
// !!(36953089 & (1 << 21)) = voice speak allowed
|
|
|
|
return !!(this.permissions & perm);
|
|
};
|
|
|
|
Role.prototype.setPermission = function setPermission(permission, value) {
|
|
if (permission instanceof String || typeof permission === "string") {
|
|
permission = _Constants.Permissions[permission];
|
|
}
|
|
if (permission) {
|
|
// valid permission
|
|
if (value) {
|
|
this.permissions |= permission;
|
|
} else {
|
|
this.permissions &= ~permission;
|
|
}
|
|
}
|
|
};
|
|
|
|
Role.prototype.setPermissions = function setPermissions(obj) {
|
|
var _this2 = this;
|
|
|
|
obj.forEach(function (value, permission) {
|
|
if (permission instanceof String || typeof permission === "string") {
|
|
permission = _Constants.Permissions[permission];
|
|
}
|
|
if (permission) {
|
|
// valid permission
|
|
_this2.setPermission(permission, value);
|
|
}
|
|
});
|
|
};
|
|
|
|
Role.prototype.colorAsHex = function colorAsHex() {
|
|
var val = this.color.toString();
|
|
while (val.length < 6) {
|
|
val = "0" + val;
|
|
}
|
|
return "#" + val;
|
|
};
|
|
|
|
Role.prototype["delete"] = function _delete() {
|
|
return this.client.deleteRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
|
|
};
|
|
|
|
Role.prototype.edit = function edit() {
|
|
return this.client.updateRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
|
|
};
|
|
|
|
Role.prototype.update = function update() {
|
|
return this.client.updateRole.apply(this.client, _UtilArgumentRegulariser.reg(this, arguments));
|
|
};
|
|
|
|
Role.prototype.addMember = function addMember(member, callback) {
|
|
return this.client.addMemberToRole.apply(this.client, [member, this, callback]);
|
|
};
|
|
|
|
Role.prototype.addUser = function addUser(member, callback) {
|
|
return this.client.addUserToRole.apply(this.client, [member, this, callback]);
|
|
};
|
|
|
|
Role.prototype.removeMember = function removeMember(member, callback) {
|
|
return this.client.removeMemberFromRole.apply(this.client, [member, this, callback]);
|
|
};
|
|
|
|
Role.prototype.removeUser = function removeUser(member, callback) {
|
|
return this.client.removeUserFromRole.apply(this.client, [member, this, callback]);
|
|
};
|
|
|
|
return Role;
|
|
})();
|
|
|
|
exports["default"] = Role;
|
|
module.exports = exports["default"];
|