const { Infraction } = require('../interfaces/'); class Vckick extends Infraction { constructor(client, opts = {}) { super(client, { type: 'VCKICK', 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: 0xF9DC5C, dictionary: { past: 'vckicked', present: 'vckick' }, points: opts.points, expiration: opts.expiration, data: opts.data }); this.client = client; this.member = opts.target; } async execute() { try { await this.member.voice.kick(this._reason); } catch(error) { return this._fail('INFRACTION_ERROR'); } await this.handle(); return this._succeed(); } verify() { const missing = this.guild._checkPermissions(this.message, 'command:vckick'); if(missing.length > 0) { return super._fail('C_VCKICK_INSUFFICIENTPERMISSIONS'); } if(!this.member.voice.channel) return this._fail('C_VCKICK_NOCHANNEL'); return super._verify(); } } module.exports = Vckick;