47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
// SupportBot | Emerald Services
|
|
// Ticket ID Structure
|
|
|
|
const db = require("./Database");
|
|
|
|
class TicketNumberID {
|
|
static async pad() {
|
|
let num = await this.get();
|
|
let n = num + "";
|
|
await this.set(num + 1);
|
|
return n.length >= 4 ? n : new Array(4 - n.length + 1).join("0") + n;
|
|
}
|
|
|
|
static async get() {
|
|
const settings = db.getSettings ? db.getSettings() : {};
|
|
if (typeof settings.ticket_counter === "number") {
|
|
return settings.ticket_counter;
|
|
}
|
|
|
|
const row = db.getTicketPanel ? db.getTicketPanel() : null;
|
|
if (row && typeof row.message_id === "string" && row.message_id.startsWith("panel-")) {
|
|
const parsed = parseInt(row.message_id.replace("panel-", ""), 10);
|
|
if (!isNaN(parsed)) return parsed;
|
|
}
|
|
|
|
if (row && typeof row.id === "number" && row.id < 1000000) {
|
|
return row.id;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static async set(value) {
|
|
const settings = db.getSettings ? db.getSettings() : {};
|
|
settings.ticket_counter = value;
|
|
if (db.saveSettings) db.saveSettings(settings);
|
|
if (db.saveTicketPanel) db.saveTicketPanel(`panel-${value}`, "none");
|
|
return value;
|
|
}
|
|
|
|
static async reset() {
|
|
return await this.set(0);
|
|
}
|
|
}
|
|
|
|
module.exports = TicketNumberID;
|