Initial Code

This commit is contained in:
2025-11-23 13:22:13 -05:00
parent b16d4adfd2
commit c3e52d6a03
96 changed files with 7088 additions and 135 deletions

81
src/libs/Config.ts Normal file
View File

@@ -0,0 +1,81 @@
import fs from 'fs';
interface Role {
id: string;
name: string;
}
interface RolesConfig {
helperroles: Role[];
educationroles: Role[];
languageroles: Role[];
locationroles: Role[];
pingroles: Role[];
}
interface Birthday {
day: number;
month: number;
timezone?: string;
}
interface BirthdaysConfig {
[userId: string]: Birthday;
}
interface ReplyTextConfig {
[key: string]: string;
}
export default class Config {
private roles: RolesConfig | null;
private replyText: ReplyTextConfig | null;
private bdays: BirthdaysConfig | null;
constructor() {
this.roles = null;
this.replyText = null;
this.bdays = null;
this.loadConfig();
}
async loadConfig(): Promise<void> {
let rawdata: Buffer;
// Load the roles.json file
rawdata = fs.readFileSync('./config/roles.json');
this.roles = JSON.parse(rawdata.toString());
rawdata = fs.readFileSync('./config/replytext.json');
this.replyText = JSON.parse(rawdata.toString());
rawdata = fs.readFileSync('./storage/bdays.json');
this.bdays = JSON.parse(rawdata.toString());
}
getRoles(): RolesConfig | null { return this.roles; }
getHelperRoles(): Role[] { return this.roles?.helperroles || []; }
getEducationRoles(): Role[] { return this.roles?.educationroles || []; }
getLanguageRoles(): Role[] { return this.roles?.languageroles || []; }
getLocationRoles(): Role[] { return this.roles?.locationroles || []; }
getPingRoles(): Role[] { return this.roles?.pingroles || []; }
getReplyText(): ReplyTextConfig | null { return this.replyText; }
getBdays(): BirthdaysConfig | null { return this.bdays; }
getBday(userId: string): Birthday | null {
return this.bdays?.[userId] || null;
}
setBday(userId: string, bday: Birthday): void {
if (!this.bdays) this.bdays = {};
this.bdays[userId] = bday;
fs.writeFileSync('./storage/bdays.json', JSON.stringify(this.bdays, null, 2));
}
removeBday(userId: string): void {
if (this.bdays?.[userId]) {
delete this.bdays[userId];
fs.writeFileSync('./storage/bdays.json', JSON.stringify(this.bdays, null, 2));
}
}
}