Add ability to ban non-members from guilds (#638)

This commit is contained in:
Schuyler Cebulskie
2016-09-06 16:55:42 -04:00
committed by GitHub
parent e1bda864f7
commit 9d694d2b67
3 changed files with 28 additions and 13 deletions

View File

@@ -331,14 +331,15 @@ class RESTMethods {
}); });
} }
banGuildMember(member, deleteDays) { banGuildMember(guild, member, deleteDays) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const data = { const user = this.rest.client.resolver.resolveUser(member);
if (!user) throw new Error('cannot ban a user that is not a user resolvable');
this.rest.makeRequest('put', `${Constants.Endpoints.guildBans(guild.id)}/${user.id}`, true, {
'delete-message-days': deleteDays, 'delete-message-days': deleteDays,
}; }).then(() => {
this.rest.makeRequest('put', `${Constants.Endpoints.guildBans(member.guild.id)}/${member.id}`, true, data) resolve(member instanceof GuildMember ? member : user);
.then(() => resolve(member)) }).catch(reject);
.catch(reject);
}); });
} }

View File

@@ -146,7 +146,7 @@ class Guild {
/** /**
* Returns the GuildMember form of a User object, if the User is present in the guild. * Returns the GuildMember form of a User object, if the User is present in the guild.
* @param {UserResolvable} user The user that you want to obtain the GuildMember of * @param {UserResolvable} user The user that you want to obtain the GuildMember of
* @returns {GuildMember|null} * @returns {?GuildMember}
* @example * @example
* // get the guild member of a user * // get the guild member of a user
* const member = guild.member(message.author); * const member = guild.member(message.author);
@@ -533,17 +533,31 @@ class Guild {
} }
/** /**
* Unbans a member from the Guild * Bans a user from the guild.
* @param {UserResolvable} member The member to unban * @param {UserResolvable} user The user to ban
* @param {number} [deleteDays=0] The amount of days worth of messages from this user that should
* also be deleted. Between `0` and `7`.
* @returns {Promise<GuildMember|User>}
* @example
* // ban a user
* guild.ban('123123123123');
*/
ban(user, deleteDays = 0) {
return this.client.rest.methods.banGuildMember(this, user, deleteDays);
}
/**
* Unbans a user from the Guild.
* @param {UserResolvable} user The user to unban
* @returns {Promise<User>} * @returns {Promise<User>}
* @example * @example
* // unban a member * // unban a user
* guild.unban('123123123123') * guild.unban('123123123123')
* .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`)) * .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))
* .catch(reject); * .catch(reject);
*/ */
unban(member) { unban(user) {
return this.client.rest.methods.unbanGuildMember(this, member); return this.client.rest.methods.unbanGuildMember(this, user);
} }
/** /**

View File

@@ -271,7 +271,7 @@ class GuildMember {
* guildMember.ban(7); * guildMember.ban(7);
*/ */
ban(deleteDays = 0) { ban(deleteDays = 0) {
return this.client.rest.methods.banGuildMember(this, deleteDays); return this.client.rest.methods.banGuildMember(this.guild, this, deleteDays);
} }
sendMessage() { sendMessage() {