2
0
mirror of https://github.com/thedevs-network/the-guard-bot synced 2025-08-25 03:17:09 +00:00

55 lines
1.3 KiB
JavaScript
Raw Normal View History

2020-03-13 22:02:41 +01:00
// @ts-check
'use strict';
const dedent = require('dedent-js');
2018-11-28 18:23:57 +01:00
const ms = require('millisecond');
const { context } = require('../bot');
const { escapeHtml, link } = require('../utils/tg');
2018-11-28 18:23:57 +01:00
const {
expireWarnsAfter = Infinity,
numberOfWarnsToBan,
2020-03-09 23:27:19 +01:00
} = require('../utils/config').config;
const { warn } = require('../stores/user');
const ban = require('./ban');
2018-11-28 18:23:57 +01:00
const isNewerThan = date => warning => warning.date >= date;
2019-07-07 17:58:23 +02:00
const cmp = (a, b) => Math.sign(a - b);
2019-05-31 17:02:00 +02:00
module.exports = async ({ admin, amend, reason, userToWarn }) => {
const by_id = admin.id;
const date = new Date();
2019-05-31 17:02:00 +02:00
const { warns } = await warn(
userToWarn,
{ by_id, date, reason },
{ amend }
);
2020-05-04 23:32:00 +02:00
const recentWarns = warns.filter(
isNewerThan(date.getTime() - ms(expireWarnsAfter))
);
2019-07-07 17:58:23 +02:00
const count = {
'-1': recentWarns.length + '/' + numberOfWarnsToBan,
0: `${recentWarns.length}/${numberOfWarnsToBan}, <b>last warning!</b>`,
2020-05-04 23:32:00 +02:00
1: `<b>banned</b> for receiving ${numberOfWarnsToBan} warnings!`,
2019-07-07 17:58:23 +02:00
}[cmp(recentWarns.length + 1, numberOfWarnsToBan)];
const warnMessage = dedent(`
${link(admin)} <b>warned</b> ${link(userToWarn)} <b>for</b>:
${escapeHtml(reason)} (${count})`);
2018-11-28 18:23:57 +01:00
if (recentWarns.length >= numberOfWarnsToBan) {
await ban({
admin: context.botInfo,
reason: 'Reached max number of warnings',
userToBan: userToWarn,
});
}
return warnMessage;
};