Fix ban/unban with IDs

This commit is contained in:
Schuyler Cebulskie
2016-09-18 23:07:30 -04:00
parent bbddfef7f6
commit 6c6da43da3
3 changed files with 24 additions and 10 deletions

File diff suppressed because one or more lines are too long

View File

@@ -365,28 +365,40 @@ class RESTMethods {
banGuildMember(guild, member, deleteDays) { banGuildMember(guild, member, deleteDays) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const user = this.rest.client.resolver.resolveUser(member); const id = this.rest.client.resolver.resolveUserID(member);
if (!user) throw new Error('Couldn\'t resolve the user to ban.'); if (!id) throw new Error('Couldn\'t resolve the user ID to ban.');
this.rest.makeRequest('put', `${Constants.Endpoints.guildBans(guild.id)}/${user.id}`, true, {
this.rest.makeRequest('put', `${Constants.Endpoints.guildBans(guild.id)}/${id}`, true, {
'delete-message-days': deleteDays, 'delete-message-days': deleteDays,
}).then(() => { }).then(() => {
resolve(member instanceof GuildMember ? member : user); if (member instanceof GuildMember) {
resolve(member);
return;
}
const user = this.rest.client.resolver.resolveUser(id);
if (user) {
member = this.rest.client.resolver.resolveGuildMember(guild, user);
resolve(member || user);
return;
}
resolve(id);
}).catch(reject); }).catch(reject);
}); });
} }
unbanGuildMember(guild, member) { unbanGuildMember(guild, member) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
member = this.rest.client.resolver.resolveUser(member); const id = this.rest.client.resolver.resolveUserID(member);
if (!member) throw new Error('Couldn\'t resolve the user to unban.'); if (!id) throw new Error('Couldn\'t resolve the user ID to ban.');
const listener = (eGuild, eUser) => { const listener = (eGuild, eUser) => {
if (guild.id === guild.id && member.id === eUser.id) { if (eGuild.id === guild.id && eUser.id === id) {
this.rest.client.removeListener(Constants.Events.GUILD_BAN_REMOVE, listener); this.rest.client.removeListener(Constants.Events.GUILD_BAN_REMOVE, listener);
resolve(eUser); resolve(eUser);
} }
}; };
this.rest.client.on(Constants.Events.GUILD_BAN_REMOVE, listener); this.rest.client.on(Constants.Events.GUILD_BAN_REMOVE, listener);
this.rest.makeRequest('del', `${Constants.Endpoints.guildBans(guild.id)}/${member.id}`, true).catch(reject); this.rest.makeRequest('del', `${Constants.Endpoints.guildBans(guild.id)}/${id}`, true).catch(reject);
}); });
} }

View File

@@ -381,7 +381,9 @@ class Guild {
* @param {UserResolvable} user The user to ban * @param {UserResolvable} user The user to ban
* @param {number} [deleteDays=0] The amount of days worth of messages from this user that should * @param {number} [deleteDays=0] The amount of days worth of messages from this user that should
* also be deleted. Between `0` and `7`. * also be deleted. Between `0` and `7`.
* @returns {Promise<GuildMember|User>} * @returns {Promise<GuildMember|User|string>} Result object will be resolved as specifically as possible.
* If the GuildMember cannot be resolved, the User will instead be attempted to be resolved. If that also cannot
* be resolved, the user ID will be the result.
* @example * @example
* // ban a user * // ban a user
* guild.ban('123123123123'); * guild.ban('123123123123');