Compare commits

...

5 Commits

7 changed files with 117 additions and 6 deletions

54
database/Member.ts Normal file
View File

@ -0,0 +1,54 @@
import { prop, getModelForClass } from "@typegoose/typegoose"
/* TODO
* Comments
* Further attributes for class
* */
export type MemberAdditionalAcknowledgement =
"Chair of the Board of Governors" |
"Vice Chair of the Board of Governors" |
"Voting Seat Member of the Board of Governors" |
string;
// enum for the used programming languages in whois information
export enum MemberUsedLanguages {
ASM = "lang-asm",
CFAM = "lang-cfam",
CSHARP = "lang-csharp",
GO = "lang-go",
JAVA = "lang-java",
JS = "lang-js",
KT = "lang-kt",
PY = "lang-py",
RB = "lang-rb",
RS = "lang-rs",
SWIFT = "lang-swift",
TS = "lang-ts"
}
// enum for the used operating systems in the whois information
export enum MemberUsedOperatingSystems {
ARCH = "os-arch",
DEB = "os-deb",
CENT = "os-cent",
FEDORA = "os-fedora",
MDARWIN = "os-mdarwin",
MANJARO = "os-manjaro",
REDHAT = "os-redhat",
UBUNTU = "os-ubuntu",
WIN = "os-win"
}
export default class Member {
@prop({ required: true, unique: true })
public discordID: string | undefined;
@prop()
public usedOperatingSystems: MemberUsedOperatingSystems[] | undefined;
@prop()
public usedLanguages: MemberUsedLanguages[] | undefined;
@prop()
public additionalAcknowledgement: MemberAdditionalAcknowledgement[] | undefined;
}

58
database/Partner.ts Normal file
View File

@ -0,0 +1,58 @@
import { prop, getModelForClass } from "@typegoose/typegoose";
import Member from "./Member";
/* TODO
* Comments
* Further attributes for class
* */
export type PartnerTitle =
"Director of Engineering" |
"Director of Operations" |
"Deputy Director of Engineering" |
"Deputy Director of Operations" |
"Services Manager" |
"Project Manager" |
"Engineering Core Partner" |
"Operations Core Partner" |
"Community Moderator" |
"Technician" |
string;
export enum PartnerDepartment {
INDEPENDENT_AGENCY,
ENGINEERING, // Department of Engineering
OPERATIONS // Department of Operations
}
export enum PartnerRoleType {
MANAGERIAL,
NONMANAGERIAL,
}
export enum PartnerCommissionType {
TENURE,
PROVISIONAL,
CONTRACTUAL,
ACTING,
INTERIM,
TRIAL,
}
export default class Partner extends Member {
@prop({ required: true })
public roleType: PartnerRoleType | undefined;
@prop({ required: true })
public commissionType: PartnerCommissionType | undefined;
@prop({ required: true })
public department: PartnerDepartment | undefined;
@prop({ required: true })
public title: PartnerTitle | "Partner" | undefined;
@prop()
public directReport: Partner | string | undefined;
}

View File

@ -9,7 +9,6 @@ export default class Ping extends DiscordInteractionCommand {
public async execute(interaction: ChatInputCommandInteraction): Promise<void> { public async execute(interaction: ChatInputCommandInteraction): Promise<void> {
const startTimestamp = Date.now(); // Mark the start of processing const startTimestamp = Date.now(); // Mark the start of processing
// Assuming `interaction.reply` sends the initial response and records the timestamp right after
await interaction.reply({ content: "Pong!", ephemeral: false }); await interaction.reply({ content: "Pong!", ephemeral: false });
const repliedTimestamp = Date.now(); // Mark the timestamp after replying const repliedTimestamp = Date.now(); // Mark the timestamp after replying

View File

@ -14,8 +14,8 @@
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
// "jsx": "preserve", /* Specify what JSX code is generated. */ // "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */

View File

@ -3,7 +3,7 @@ export default abstract class DiscordEvent {
public name: string; public name: string;
protected client: Client; protected client: Client;
constructor(name: string = "", client: Client) { protected constructor(name: string = "", client: Client) {
this.name = name; this.name = name;
this.client = client; this.client = client;
this.execute = this.execute.bind(this); this.execute = this.execute.bind(this);

View File

@ -5,7 +5,7 @@ export default abstract class DiscordInteractionCommand {
public description: string; public description: string;
public builder: SlashCommandBuilder; public builder: SlashCommandBuilder;
constructor(name: string, description: string) { protected constructor(name: string, description: string) {
this.name = name; this.name = name;
this.description = description; this.description = description;
this.builder = new SlashCommandBuilder(); this.builder = new SlashCommandBuilder();