refactor/some core files to .ts + update some imports in commands

This commit is contained in:
SowinskiBraeden committed 2025-09-28 22:10:14 -07:00
1 parent 76aee78f23
commit afcf24115e
32 files changed
+806 -680

No files matched your search

+193
View File
@@ -0,0 +1,193 @@
import { Snowflake } from "discord.js";
import DayZR from "../DayZRBot";
import { NitradoCredentialStatus } from "@util/NitradoAPI";
export const enum IntegerBoolean {
FALSE,
TRUE
};
export interface UAV {
// TODO: fill this out
};
export interface Alarm {
// TODO: fill this out
};
export interface NitradoConfig {
ServerID: string;
UserID: string;
Auth: string;
Status: NitradoCredentialStatus;
};
interface GuildConfigAttributes {
serverID: Snowflake;
lastLog: string | null;
serverName: string;
autoRestart: IntegerBoolean;
showKillfeedCoords: IntegerBoolean;
showKillfeedWeapon: IntegerBoolean;
purchaseUAV: IntegerBoolean;
purchaseEMP: IntegerBoolean;
allowedChannels: Array<Snowflake>;
customChannelStatus?: boolean; // optional - generated outside of DB
hasBotAdmin?: boolean; // optional - generated outside of DB
killfeedChannel: Snowflake;
connectionLogsChannel: Snowflake;
activePlayersChannel: Snowflake;
welcomeChannel: Snowflake;
factionArmbands: any;
usedArmbands: Array<string>;
excludedRoles: Array<string>;
hasExcludedRoles?: boolean; // optional - generated outside of DB
botAdminRoles: Array<Snowflake>;
alarms: Array<Alarm>;
events: Array<any>;
uavs: Array<UAV>;
incomeRoles: Array<Snowflake>;
incomeLimiter: number;
startingBalance: number;
uavPrice: number;
empPrice: number;
linkedGamertagRole: Snowflake;
memberRole: Snowflake;
adminRole: Snowflake;
combatLogTimer: number;
}
interface GuildConfigDB {
server: GuildConfigAttributes;
Nitrado: NitradoConfig | null;
};
// TODO: have better names, i.e. combatLogTimer in seconds or minutes? inclomeLimiter?
// TODO: figure out interface of
// Also this is so stupid, in the DB all server attributes are under server,
// while in the code we almost always have the attributes directly in top
// level of object, i.e. guild.startingBalance instead of guild.server.startingBalance
export interface GuildConfig extends GuildConfigAttributes {
Nitrado: NitradoConfig | null;
}
export async function GetGuild(client: DayZR, GuildId: Snowflake): Promise<GuildConfig>
{
let guild: GuildConfigDB | null = null;
if (client.databaseConnected)
{
guild = await client.dbo.collection("guilds").findOne(
{
"server.serverID": GuildId
}
).then((guild: GuildConfigDB) => guild);
}
// If guild not found, generate guild default
if (!guild)
{
guild = {
server: getDefaultSettings(GuildId),
Nitrado: null,
};
if (client.databaseConnected)
{
client.dbo.collection("guilds").insertOne(guild, (err: string) => {
if (err) client.error(`GetGuild Insert Error: ${err}`);
});
}
}
return {
serverID: GuildId,
Nitrado: guild.Nitrado,
lastLog: guild.server.lastLog,
serverName: guild.server.serverName,
autoRestart: guild.server.autoRestart,
showKillfeedCoords: guild.server.showKillfeedCoords,
showKillfeedWeapon: guild.server.showKillfeedWeapon,
purchaseUAV: guild.server.purchaseUAV,
purchaseEMP: guild.server.purchaseEMP,
allowedChannels: guild.server.allowedChannels,
customChannelStatus: guild.server.allowedChannels.length > 0,
hasBotAdmin: guild.server.botAdminRoles.length > 0,
killfeedChannel: guild.server.killfeedChannel,
connectionLogsChannel: guild.server.connectionLogsChannel,
activePlayersChannel: guild.server.activePlayersChannel,
welcomeChannel: guild.server.welcomeChannel,
factionArmbands: guild.server.factionArmbands,
usedArmbands: guild.server.usedArmbands,
excludedRoles: guild.server.excludedRoles,
hasExcludedRoles: guild.server.excludedRoles.length > 0,
botAdminRoles: guild.server.botAdminRoles,
alarms: guild.server.alarms,
events: guild.server.events,
uavs: guild.server.uavs,
incomeRoles: guild.server.incomeRoles,
incomeLimiter: guild.server.incomeLimiter,
startingBalance: guild.server.startingBalance,
uavPrice: guild.server.uavPrice,
empPrice: guild.server.empPrice,
linkedGamertagRole: guild.server.linkedGamertagRole,
memberRole: guild.server.memberRole,
adminRole: guild.server.adminRole,
combatLogTimer: guild.server.combatLogTimer,
};
}
export function getDefaultSettings(GuildId: Snowflake): GuildConfigAttributes {
return {
serverID: GuildId,
lastLog: null,
serverName: "our server!",
autoRestart: IntegerBoolean.FALSE,
showKillfeedCoords: IntegerBoolean.FALSE,
showKillfeedWeapon: IntegerBoolean.FALSE,
purchaseUAV: IntegerBoolean.TRUE, // Allow/Disallow purchase of UAVs
purchaseEMP: IntegerBoolean.TRUE, // Allow/Disallow purchase of EMPs
allowedChannels: [],
killfeedChannel: "",
connectionLogsChannel: "",
activePlayersChannel: "",
welcomeChannel: "",
factionArmbands: {},
usedArmbands: [],
excludedRoles: [],
botAdminRoles: [],
alarms: [],
events: [],
uavs: [],
incomeRoles: [],
incomeLimiter: 168, // # of hours in 7 days
startingBalance: 500,
uavPrice: 50000,
empPrice: 500000,
linkedGamertagRole: "",
memberRole: "",
adminRole: "",
combatLogTimer: 5, // minutes
};
};