fix(GuildMemberManager): options.roles on 'prune' (#4838)

This commit is contained in:
izexi
2020-10-17 14:39:29 +01:00
committed by GitHub
parent b8aa967226
commit a45cc112e5

View File

@@ -162,19 +162,22 @@ class GuildMemberManager extends BaseManager {
* .then(pruned => console.log(`I just pruned ${pruned} people!`))
* .catch(console.error);
*/
prune({ days = 7, dry = false, count = true, roles = [], reason } = {}) {
prune({ days = 7, dry = false, count: compute_prune_count = true, roles = [], reason } = {}) {
if (typeof days !== 'number') throw new TypeError('PRUNE_DAYS_TYPE');
const query = new URLSearchParams();
query.set('days', days);
query.set('compute_prune_count', count);
const query = { days };
const resolvedRoles = [];
for (const role of roles) {
const resolvedRole = this.guild.roles.resolveID(role);
if (!resolvedRole) {
return Promise.reject(new TypeError('INVALID_TYPE', 'roles', 'Array of Roles or Snowflakes', true));
}
query.append('include_roles', role);
resolvedRoles.push(resolvedRole);
}
if (resolvedRoles.length) {
query.include_roles = dry ? resolvedRoles.join(',') : resolvedRoles;
}
const endpoint = this.client.api.guilds(this.guild.id).prune;
@@ -183,13 +186,12 @@ class GuildMemberManager extends BaseManager {
return endpoint.get({ query, reason }).then(data => data.pruned);
}
const body = [...query.entries()].reduce((acc, [k, v]) => {
if (k === 'include_roles') v = (acc[k] || []).concat(v);
acc[k] = v;
return acc;
}, {});
return endpoint.post({ data: body, reason }).then(data => data.pruned);
return endpoint
.post({
data: { ...query, compute_prune_count },
reason,
})
.then(data => data.pruned);
}
/**