Added info command. Updated warnings to include silent warnings. Removed references to state.
This commit is contained in:
parent
9a1a207d2c
commit
91575b9029
|
@ -0,0 +1,23 @@
|
|||
const state = require('../state.js');
|
||||
exports.roles = ['Admins', 'Moderators'];
|
||||
|
||||
function formatWarnings(warnings) {
|
||||
return warnings.map(x => `[${x.date}] ${x.warnedByUsername} warned ${x.username} [${x.priorWarnings} + 1]. ${x.silent ? '(silent)' : ''} ${x.cleared ? '(cleared)' : ''}`)
|
||||
}
|
||||
|
||||
function formatBans(bans) {
|
||||
return bans.map(x => `[${x.date}] ${x.warnedByUsername} banned ${x.username} [${x.priorWarnings} + 1].`)
|
||||
}
|
||||
|
||||
exports.command = function (message) {
|
||||
message.mentions.users.map((user) => {
|
||||
const totalWarnings = state.warnings.filter(x => x.id === user.id && x.cleared == false).length;
|
||||
let warns = state.warnings.filter(x => x.id == user.id)
|
||||
let bans = state.bans.filter(x => x.id == user.id)
|
||||
|
||||
const warnsString = `Warns:\`\`\`${formatWarnings(warns).join('\n')}\`\`\``
|
||||
const bansString = `Bans:\`\`\`${formatBans(bans).join('\n')}\`\`\``
|
||||
|
||||
message.channel.send(`\`${user.username} (${totalWarnings}) information:\`${warns.length != 0 ? warnsString : ''}${bans.length != 0 ? bansString : ''}`)
|
||||
});
|
||||
}
|
|
@ -5,20 +5,19 @@ const UserWarning = require('../models/UserWarning.js');
|
|||
|
||||
exports.roles = ['Admins', 'Moderators'];
|
||||
exports.command = function (message) {
|
||||
const silent = message.content.includes('silent')
|
||||
|
||||
message.mentions.users.map((user) => {
|
||||
const count = state.warnings.filter(x => x.id === user.id && !x.cleared).length || 0;
|
||||
|
||||
if (silent == false) {
|
||||
message.channel.send(`${user} You have been warned. Additional infractions may result in a ban.`);
|
||||
}
|
||||
|
||||
logger.info(`${message.author.username} ${message.author} has warned ${user.username} ${user} [${count} + 1].`);
|
||||
state.logChannel.send(`${message.author} has warned ${user} [${count} + 1].`);
|
||||
|
||||
state.warnings.push(new UserWarning(user.id, user.username, message.author.id, message.author.username, count));
|
||||
state.warnings.push(new UserWarning(user.id, user.username, message.author.id, message.author.username, count, silent));
|
||||
data.flushWarnings();
|
||||
|
||||
state.stats.warnings += 1;
|
||||
|
||||
if (count + 1 >= 3) {
|
||||
message.channel.send(`.ban ${user}`);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
class UserWarning {
|
||||
constructor (id, username, warnedBy, warnedByUsername, priorWarnings) {
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
this.date = new Date();
|
||||
this.warnedBy = warnedBy;
|
||||
this.warnedByUsername = warnedByUsername;
|
||||
this.priorWarnings = priorWarnings;
|
||||
constructor (id, username, warnedBy, warnedByUsername, priorWarnings, silent) {
|
||||
this.id = id
|
||||
this.username = username
|
||||
this.date = new Date()
|
||||
this.warnedBy = warnedBy
|
||||
this.warnedByUsername = warnedByUsername
|
||||
this.priorWarnings = priorWarnings
|
||||
this.silent = silent
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,24 +63,6 @@ client.on('reconnecting', () => {
|
|||
|
||||
client.on('guildMemberAdd', (member) => {
|
||||
member.addRole(process.env.DISCORD_RULES_ROLE);
|
||||
state.stats.joins += 1;
|
||||
});
|
||||
|
||||
client.on('guildMemberRemove', (member) => {
|
||||
state.stats.leaves += 1;
|
||||
});
|
||||
|
||||
// Output the stats for state.stats every 24 hours.
|
||||
// Server is in UTC mode, 11:30 EST would be 03:30 UTC.
|
||||
schedule.scheduleJob({ hour: 3, minute: 30 }, function () {
|
||||
// logger.info(`Here are today's stats for ${(new Date()).toLocaleDateString()}! ${state.stats.joins} users have joined, ${state.stats.ruleAccepts} users have accepted the rules, ${state.stats.leaves} users have left, ${state.stats.warnings} warnings have been issued.`);
|
||||
// state.logChannel.send(`Here are today's stats for ${(new Date()).toLocaleDateString()}! ${state.stats.joins} users have joined, ${state.stats.ruleAccepts} users have accepted the rules, ${state.stats.leaves} users have left, ${state.stats.warnings} warnings have been issued.`);
|
||||
|
||||
// Clear the stats for the day.
|
||||
state.stats.joins = 0;
|
||||
state.stats.ruleAccepts = 0;
|
||||
state.stats.leaves = 0;
|
||||
state.stats.warnings = 0;
|
||||
});
|
||||
|
||||
client.on('message', message => {
|
||||
|
@ -116,8 +98,6 @@ client.on('message', message => {
|
|||
if (message.content.toLowerCase().includes(process.env.DISCORD_RULES_TRIGGER)) {
|
||||
// We want to remove the 'Unauthorized' role from them once they agree to the rules.
|
||||
logger.verbose(`${message.author.username} ${message.author} has accepted the rules, removing role ${process.env.DISCORD_RULES_ROLE}.`);
|
||||
state.stats.ruleAccepts += 1;
|
||||
|
||||
message.member.removeRole(process.env.DISCORD_RULES_ROLE, 'Accepted the rules.');
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue