Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import dayjs from 'dayjs';
import {DEFAULT_TZ} from "../lib/Common.js";
class AuditLogsSingleton {
constructor() {
this.auditLogs = [];// in memory audit logs
}
static get() {
if (!AuditLogsSingleton.instance) {
AuditLogsSingleton.instance = new AuditLogsSingleton();
}
return AuditLogsSingleton.instance;
}
}
export default class AuditLogsService {
constructor(discordService) {
this.discordService = discordService;
}
createAuditLog(log) {
const instant = dayjs(new Date()).tz(DEFAULT_TZ).format("DD/MM/YYYY à HH:mm");
AuditLogsSingleton.get().auditLogs.push({instant, log})
}
retrieveAuditLogs(cleanup = false) {
const logs = AuditLogsSingleton.get().auditLogs;
const clone = [].concat(logs);
if (true === cleanup) {
AuditLogsSingleton.get().auditLogs = [];
}
return clone;
}
async notifyLogs() {
const logs = this.retrieveAuditLogs(true);
console.log(`*${logs?.length}`);// debug
if (logs === undefined || logs.length < 1) {
return;
}
let markdown = this.formatMarkdownMessageFromLogs(logs);
return await this.discordService.sendMessage(markdown);
}
formatMarkdownMessageFromLogs(logs) {
const count = logs.length;
const nbMsg = count > 1 ? `${count} messages` : `${count} message`;
let markdown = `${nbMsg} :\n` + "```\n";
markdown += logs.map(entry => `${entry.instant}|${entry.log}`).join(" \n");
markdown += "\n```";
//~ prevent discord limit
const MAX_DISCORD_MSG_LENGTH = 2000;
if (markdown.length > MAX_DISCORD_MSG_LENGTH) {
markdown = markdown.substring(0, MAX_DISCORD_MSG_LENGTH - 12);
markdown += "\n(...)\n```";
}
return markdown;
}
}
|