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) => {
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,
};
this.rest.makeRequest('put', `${Constants.Endpoints.guildBans(member.guild.id)}/${member.id}`, true, data)
.then(() => resolve(member))
.catch(reject);
}).then(() => {
resolve(member instanceof GuildMember ? member : user);
}).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.
* @param {UserResolvable} user The user that you want to obtain the GuildMember of
* @returns {GuildMember|null}
* @returns {?GuildMember}
* @example
* // get the guild member of a user
* const member = guild.member(message.author);
@@ -533,17 +533,31 @@ class Guild {
}
/**
* Unbans a member from the Guild
* @param {UserResolvable} member The member to unban
* Bans a user from the guild.
* @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>}
* @example
* // unban a member
* // unban a user
* guild.unban('123123123123')
* .then(user => console.log(`Unbanned ${user.username} from ${guild.name}`))
* .catch(reject);
*/
unban(member) {
return this.client.rest.methods.unbanGuildMember(this, member);
unban(user) {
return this.client.rest.methods.unbanGuildMember(this, user);
}
/**

View File

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