const { Infraction } = require('../interfaces/'); class Softban extends Infraction { constructor(client, opts = {}) { super(client, { type: 'SOFTBAN', targetType: 'user', message: opts.message, executor: opts.executor.user, target: opts.target.user, reason: opts.reason || 'N/A', guild: opts.guild, channel: opts.channel, arguments: opts.arguments, silent: opts.silent, color: 0xdb36fc, dictionary: { past: 'softbanned', present: 'softban' } }); this.client = client; this.member = opts.target; } async execute() { if(!this.member.bannable) { return this._fail('C_SOFTBAN_INSUFFICIENTPERMISSIONS'); } let days = 1; if(this.arguments.days) days = this.arguments.days.value; try { await this.guild.members.ban(this.target.id, { reason: this._reason, days }); await this.guild.members.unban(this.target.id, this._reason); } catch(error) { return this._fail('INFRACTION_ERROR'); } await this.handle(); return this._succeed(); } } module.exports = Softban;