Resolve role IDs

This commit is contained in:
abalabahaha
2016-01-29 17:14:40 -08:00
parent ee2172c1d5
commit 8726b23730
4 changed files with 139 additions and 55 deletions

View File

@@ -621,6 +621,7 @@ export default class InternalClient {
// def updateRole
updateRole(role, data) {
role = this.resolver.resolveRole(role);
var server = this.resolver.resolveServer(role.server);
var newData = {
@@ -661,11 +662,14 @@ export default class InternalClient {
}
if (!Array.isArray(roles) || roles.length === 0) {
if (roles instanceof Role) {
roles = this.resolve.resolveRole(roles);
if (roles) {
roles = [roles];
} else {
return Promise.reject(new Error("invalid array of roles"));
}
} else {
roles = roles.map(r => this.resolver.resolveRole(r));
}
if (roles.some(role => !role.server.memberMap[member.id])) {
@@ -691,8 +695,12 @@ export default class InternalClient {
}
memberHasRole(member, role) {
role = this.resolver.resolveRole(role);
member = this.resolver.resolveUser(member);
if (!role) {
throw new Error("invalid role");
}
if (!member) {
throw new Error("user not found");
}
@@ -709,11 +717,14 @@ export default class InternalClient {
}
if (!Array.isArray(roles) || roles.length === 0) {
if (roles instanceof Role) {
roles = this.resolve.resolveRole(roles);
if (roles) {
roles = [roles];
} else {
return Promise.reject(new Error("invalid array of roles"));
}
} else {
roles = roles.map(r => this.resolver.resolveRole(r));
}
var roleIDS = roles[0].server.memberMap[member.id].roles.map(r => r.id);
@@ -829,6 +840,8 @@ export default class InternalClient {
var user;
if (role instanceof User) {
user = role;
} else {
role = this.resolver.resolveRole(role);
}
var data = {};

View File

@@ -9,6 +9,7 @@ import TextChannel from "../../Structures/TextChannel";
import VoiceChannel from "../../Structures/VoiceChannel";
import ServerChannel from "../../Structures/ServerChannel";
import PMChannel from "../../Structures/PMChannel";
import Role from "../../Structures/Role";
import Server from "../../Structures/Server";
import Message from "../../Structures/Message";
import Invite from "../../Structures/Invite";
@@ -58,6 +59,21 @@ export default class Resolver {
return null;
}
resolveRole(resource) {
if (resource instanceof Role) {
return resource;
}
if (resource instanceof String || typeof resource === "string") {
var role = null;
for (var server of this.internal.servers) {
if (role = server.roles.find(r => r.id == resource)) {
return role;
}
}
}
return null;
}
resolveFile(resource) {
if (typeof resource === "string" || resource instanceof String) {
return fs.createReadStream(resource);