add index route info, make it fetch per hour instead of every user, add health route, update to latest biome config aswell as logger
All checks were successful
Code quality checks / biome (push) Successful in 15s
All checks were successful
Code quality checks / biome (push) Successful in 15s
This commit is contained in:
parent
8cfa75ec57
commit
75d3dab85e
21 changed files with 943 additions and 364 deletions
|
@ -1,4 +1,4 @@
|
|||
export const discordBadges = {
|
||||
const discordBadges = {
|
||||
// User badges
|
||||
STAFF: 1 << 0,
|
||||
PARTNER: 1 << 1,
|
||||
|
@ -23,7 +23,7 @@ export const discordBadges = {
|
|||
USES_AUTOMOD: 1 << 24,
|
||||
};
|
||||
|
||||
export const discordBadgeDetails = {
|
||||
const discordBadgeDetails = {
|
||||
HYPESQUAD: {
|
||||
tooltip: "HypeSquad Events",
|
||||
icon: "/public/badges/discord/HYPESQUAD.svg",
|
||||
|
@ -86,3 +86,57 @@ export const discordBadgeDetails = {
|
|||
icon: "/public/badges/discord/USES_AUTOMOD.svg",
|
||||
},
|
||||
};
|
||||
|
||||
const badgeServices: badgeURLMap[] = [
|
||||
{
|
||||
service: "Vencord",
|
||||
url: "https://badges.vencord.dev/badges.json",
|
||||
},
|
||||
{
|
||||
service: "Equicord", // Ekwekord ! WOOP
|
||||
url: "https://raw.githubusercontent.com/Equicord/Equibored/refs/heads/main/badges.json",
|
||||
},
|
||||
{
|
||||
service: "Nekocord",
|
||||
url: "https://nekocord.dev/assets/badges.json",
|
||||
},
|
||||
{
|
||||
service: "ReviewDb",
|
||||
url: "https://manti.vendicated.dev/api/reviewdb/badges",
|
||||
},
|
||||
{
|
||||
service: "Enmity",
|
||||
url: (userId: string) => ({
|
||||
user: `https://raw.githubusercontent.com/enmity-mod/badges/main/${userId}.json`,
|
||||
badge: (id: string) =>
|
||||
`https://raw.githubusercontent.com/enmity-mod/badges/main/data/${id}.json`,
|
||||
}),
|
||||
},
|
||||
{
|
||||
service: "Discord",
|
||||
url: (userId: string) => `https://discord.com/api/v10/users/${userId}`,
|
||||
},
|
||||
];
|
||||
|
||||
function getServiceDescription(service: string): string {
|
||||
const descriptions: Record<string, string> = {
|
||||
Vencord: "Custom badges from Vencord Discord client",
|
||||
Equicord: "Custom badges from Equicord Discord client",
|
||||
Nekocord: "Custom badges from Nekocord Discord client",
|
||||
ReviewDb: "Badges from ReviewDB service",
|
||||
Enmity: "Custom badges from Enmity mobile Discord client",
|
||||
Discord: "Official Discord badges (staff, partner, hypesquad, etc.)",
|
||||
};
|
||||
|
||||
return descriptions[service] || "Custom badge service";
|
||||
}
|
||||
|
||||
const gitUrl = "https://git.creations.works/creations/badgeAPI";
|
||||
|
||||
export {
|
||||
badgeServices,
|
||||
discordBadges,
|
||||
discordBadgeDetails,
|
||||
getServiceDescription,
|
||||
gitUrl,
|
||||
};
|
|
@ -1,43 +0,0 @@
|
|||
export const environment: Environment = {
|
||||
port: Number.parseInt(process.env.PORT || "8080", 10),
|
||||
host: process.env.HOST || "0.0.0.0",
|
||||
development:
|
||||
process.env.NODE_ENV === "development" || process.argv.includes("--dev"),
|
||||
};
|
||||
|
||||
export const redisTtl: number = process.env.REDIS_TTL
|
||||
? Number.parseInt(process.env.REDIS_TTL, 10)
|
||||
: 60 * 60 * 1; // 1 hour
|
||||
|
||||
export const badgeServices: badgeURLMap[] = [
|
||||
{
|
||||
service: "Vencord",
|
||||
url: "https://badges.vencord.dev/badges.json",
|
||||
},
|
||||
{
|
||||
service: "Equicord", // Ekwekord ! WOOP
|
||||
url: "https://raw.githubusercontent.com/Equicord/Equibored/refs/heads/main/badges.json",
|
||||
},
|
||||
{
|
||||
service: "Nekocord",
|
||||
url: "https://nekocord.dev/assets/badges.json",
|
||||
},
|
||||
{
|
||||
service: "ReviewDb",
|
||||
url: "https://manti.vendicated.dev/api/reviewdb/badges",
|
||||
},
|
||||
{
|
||||
service: "Enmity",
|
||||
url: (userId: string) => ({
|
||||
user: `https://raw.githubusercontent.com/enmity-mod/badges/main/${userId}.json`,
|
||||
badge: (id: string) =>
|
||||
`https://raw.githubusercontent.com/enmity-mod/badges/main/data/${id}.json`,
|
||||
}),
|
||||
},
|
||||
{
|
||||
service: "Discord",
|
||||
url: (userId: string) => `https://discord.com/api/v10/users/${userId}`,
|
||||
},
|
||||
];
|
||||
|
||||
export const botToken: string | undefined = process.env.DISCORD_TOKEN;
|
45
config/index.ts
Normal file
45
config/index.ts
Normal file
|
@ -0,0 +1,45 @@
|
|||
import { echo } from "@atums/echo";
|
||||
|
||||
const environment: Environment = {
|
||||
port: Number.parseInt(process.env.PORT || "8080", 10),
|
||||
host: process.env.HOST || "0.0.0.0",
|
||||
development:
|
||||
process.env.NODE_ENV === "development" || process.argv.includes("--dev"),
|
||||
};
|
||||
|
||||
const redisTtl: number = process.env.REDIS_TTL
|
||||
? Number.parseInt(process.env.REDIS_TTL, 10)
|
||||
: 60 * 60 * 1; // 1 hour
|
||||
|
||||
const badgeFetchInterval: number = process.env.BADGE_FETCH_INTERVAL
|
||||
? Number.parseInt(process.env.BADGE_FETCH_INTERVAL, 10)
|
||||
: 60 * 60 * 1000; // 1 hour
|
||||
|
||||
const botToken: string | undefined = process.env.DISCORD_TOKEN;
|
||||
|
||||
function verifyRequiredVariables(): void {
|
||||
const requiredVariables = ["HOST", "PORT", "DISCORD_TOKEN"];
|
||||
|
||||
let hasError = false;
|
||||
|
||||
for (const key of requiredVariables) {
|
||||
const value = process.env[key];
|
||||
if (value === undefined || value.trim() === "") {
|
||||
echo.error(`Missing or empty environment variable: ${key}`);
|
||||
hasError = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (hasError) {
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
export * from "@config/constants";
|
||||
export {
|
||||
environment,
|
||||
redisTtl,
|
||||
badgeFetchInterval,
|
||||
botToken,
|
||||
verifyRequiredVariables,
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue