const { Infraction } = require('../interfaces/'); const { Util } = require('../../../util/'); class SlowmodeInfraction extends Infraction { constructor(client, opts = {}) { super(client, { type: 'SLOWMODE', targetType: 'channel', message: opts.message, executor: opts.executor.user, target: opts.target, reason: opts.reason || 'N/A', guild: opts.guild, channel: opts.channel, arguments: opts.arguments, silent: opts.silent, duration: opts.duration, color: 0xff3333, dictionary: { past: 'set slowmode in', present: 'slowmode' }, points: opts.points, expiration: opts.expiration, data: opts.data }); this.client = client; } async execute() { if(this.target.rateLimitPerUser === this.data.seconds) { return this._fail('C_SLOWMODE_NOCHANGE'); } try { this.target.edit({ rateLimitPerUser: this.data.seconds }, this._reason); } catch(e) { return this._fail('INFRACTION_ERROR'); } await this.handle(); return this._succeed(); } description() { return `\n${this.guild.format('INFRACTION_DESCRIPTIONDURATION', { duration: Util.duration(this.data.seconds) })}`; } verify() { const missing = this.guild._checkPermissions(this.message, 'command:slowmode'); if(missing.length > 0) { return super._fail('C_SLOWMODE_INSUFFICIENTPERMISSIONS'); } return super._verify(); } } module.exports = SlowmodeInfraction;