start on moderation infractions and localization stuff

This commit is contained in:
noolaan 2020-04-17 01:03:53 -06:00
parent 2c11b3dcc9
commit 40a9b92c67
5 changed files with 103 additions and 0 deletions

0
language/LocaleLoader.js Normal file
View File

View File

@ -0,0 +1,34 @@
const { Infraction } = require('../interfaces/');
class Warning extends Infraction {
constructor(client, opts = {}) {
super(client, {
type: 'WARN',
targetType: 'user',
executor: opts.executor.user,
target: opts.target.user,
reason: opts.reason || 'N/A',
guild: opts.guild,
channel: opts.channel,
color: 0xe8d54e,
dictionary: {
past: 'warned',
present: 'warn'
}
});
this.client = client;
this.member = opts.target;
}
async handle() {
//Handle anything guild-related.
}
}
module.exports = Warning;

View File

@ -0,0 +1,3 @@
module.exports = {
Warning: require('./Warning.js')
};

View File

@ -0,0 +1,63 @@
const { stripIndents } = require('common-tags');
class Infraction {
constructor(client, opts = {}) {
this.client = client;
this.target = opts.target; //User or channel being targeted.
this.targetType = opts.targetType; // 'user' or 'channek'.
this.executor = opts.executor; //Whoever executed the command.
this.guild = opts.guild;
this.channel = opts.channel;
this.case = null;
this.type = opts.type; //What type of infraction (mute, kick, etc.)
this.timestamp = new Date().getTime();
this.duration = opts.duration || null; //How long the event will last. Must be in milliseconds.
this.expiration = opts.duration ? opts.duration + this.timestamp : null; //When the event will expire
this.reason = opts.reason;
this.color = opts.color; //Infraction-defined hexadecimal value to dictate what color the embed is.
this.dictionary = opts.dictionary || {}; // { past: 'banned', present: 'ban' } Infraction-defined object for the correct spellings.
this._resolved = false;
}
async resolve(opts) {
}
_json() {
return {
id: `${this.guild.id}:${this.case}`,
guild: this.guild.id,
channel: this.channel ? this.channel.id : null,
message: this.message ? this.message.id : null,
executor: this.executor.id,
target: this.target.id,
targetType: this.targetType,
type: this.type,
case: this.case,
duration: this.duration,
expiration: this.expiration,
reason: this.reason,
timestamp: this.timestamp,
}
}
get targetName() {
return this.targetType === 'user'
? this.target.tag
: `#${this.target.name}`
}
}
module.exports = Infraction;

View File

@ -0,0 +1,3 @@
module.exports = {
Infraction: require('./Infraction.js')
};