From 83b33cbae935e118f480acbcb03b0ac6a4568eb2 Mon Sep 17 00:00:00 2001 From: holzmaster Date: Sun, 14 Jul 2024 20:19:43 +0200 Subject: [PATCH] Migrate to JSONC --- .github/config.json | 4 ++ .npmrc | 1 + .vscode/settings.json | 3 + README.md | 1 + bun.lockb | Bin 107875 -> 109363 bytes config.new.jsonc | 107 ----------------------------------- config.template.json | 4 ++ package.json | 1 + src/service/configService.ts | 4 +- 9 files changed, 17 insertions(+), 108 deletions(-) create mode 100644 .npmrc delete mode 100644 config.new.jsonc diff --git a/.github/config.json b/.github/config.json index ea24666c..a29c0d22 100644 --- a/.github/config.json +++ b/.github/config.json @@ -1,4 +1,5 @@ { + // This file supports comments and trailing commas "auth": { "clientId": "", "token": "" @@ -7,16 +8,19 @@ "dsn": null }, "activity": { + // https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types "type": 0, "name": "Die Jungs von der CSZ sind mir heilig." }, "prefix": { + // You may want to choose a prefix that does not collide with others on the test server "command": ".", "modCommand": "~" }, "moderatorRoleIds": [ "893179190709477413" ], + "command": { "faulenzerPing": { "allowedRoleIds": [], diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..41583e36 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +@jsr:registry=https://npm.jsr.io diff --git a/.vscode/settings.json b/.vscode/settings.json index 555fa5e9..f89f1c8b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,9 @@ "files.eol": "\n", "cSpell.language": "de,en", "editor.formatOnSaveMode": "modificationsIfAvailable", + "files.associations": { + "config*.json": "jsonc" + }, "[javascript]": { "editor.defaultFormatter": "biomejs.biome" }, diff --git a/README.md b/README.md index c263e3e3..ff49650e 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ bun i cp config.template.json config.json $EDITOR config.json ``` +Hinweis: Die Datei kann Kommentare und Trailing-Commas (JSONC). Wenn du nicht VSCode verwendest, musst du das ggf. noch einstellen. 2. Das Template ist für die [Coding-Test-Zentrale](https://discord.gg/ekJA6GA3BJ) vorausgefüllt. Es fehlen noch: - Um einen Bot zum Testen anzulegen, einfach den Instruktionen im [Discord Developer Portal](https://discord.com/developers/applications) folgen. - Die Applikation muss als "Bot" gesetzt werden. diff --git a/bun.lockb b/bun.lockb index 41dcc6758da104aa8229fd9ace64413e4565ff0d..a5b60bb6d6a823d4f5699a8696378574e05bce07 100755 GIT binary patch delta 18291 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 diff --git a/config.new.jsonc b/config.new.jsonc deleted file mode 100644 index be15c36c..00000000 --- a/config.new.jsonc +++ /dev/null @@ -1,107 +0,0 @@ -{ - // "$schema": "", - "auth": { - "clientId": "", - "token": "" - }, - "sentry": { - "dsn": null, - }, - // https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types - "activity": { - "type": 0, - "name": "Die Jungs von der CSZ sind mir heilig", - "state": null, - "url": null - }, - "prefix": { - "command": ".", - "modCommand": "~" - }, - "moderatorRoleIds": [ - "" - ], - "command": { - "faulenzerPing": { - "allowedRoleIds": [ - "" - ], - "maxNumberOfPings": null, // default: 15 - "minRequiredReactions": null, // default: 5 - }, - "woisPing": { - "limit": 7200, - "threshold": 2 - }, - "ehre": { - "emojiNames": null, // default: ["aehre"] - }, - "quote": { - "emojiName": "quote", - "allowedGroupIds": [ - "", - ], - "voteThreshold": null, // default: 2 - "anonymousCategoryIds": [ - "", - ], - "anonymousChannelIds": [ - "", - ], - "blacklistedChannelIds": [ - "", - ], - "defaultTargetChannelId": "", - "targetChannelOverrides": { - "": "", - }, - }, - "loot": { - "enabled": true, - "scheduleCron": "*/25 * * * *", - "dropChance": 0.08, - "allowedChannelIds": [ - "", - ], - "maxTimePassedSinceLastMessage": "PT30M", - }, - "instagram": { - "rapidApiInstagramApiKey": null, - }, - }, - - "deleteThreadMessagesInChannelIds": [], - "flameTrustedUserOnBotPing": false, - - "guildGuildId": "", - - "textChannel": { - "banReasonChannelId": "", - "bannedChannelId": "", - "botLogChannelId": "", - "hauptchatChannelId": "", - "votesChannelId": "", - "botSpamChannelId": "", - "hauptwoisTextChannelId": "", - }, - - "voiceChannel": { - "hauptWoischatChannelId": "", - }, - - "role": { - "bannedRoleId": "", - "birthdayRoleId": "", - "botDenyRoleId": "", - "defaultRoleId": "", - "gruendervaeterRoleId": "", - "gruendervaeterBannedRoleId": "", - "roleDenyRoleId": "", - "shameRoleId": "", - "trustedRoleId": "", - "trustedBannedRoleId": "", - "woisgangRoleId": "", - "winnerRoleId": "", - "emotifiziererRoleId": "", - } -} diff --git a/config.template.json b/config.template.json index e95da102..5d293c2c 100644 --- a/config.template.json +++ b/config.template.json @@ -1,4 +1,5 @@ { + // This file supports comments and trailing commas "auth": { "clientId": "", "token": "" @@ -7,16 +8,19 @@ "dsn": null }, "activity": { + // https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-types "type": 0, "name": "Hi!" }, "prefix": { + // You may want to choose a prefix that does not collide with others on the test server "command": "xd", "modCommand": "yd" }, "moderatorRoleIds": [ "893179190709477413" ], + "command": { "faulenzerPing": { "allowedRoleIds": [], diff --git a/package.json b/package.json index f174b5fa..5d30b342 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "@napi-rs/canvas": "^0.1.53", "@resvg/resvg-js": "^2.6.2", "@sentry/bun": "^8.17.0", + "@std/jsonc": "npm:@jsr/std__jsonc@^1.0.0-rc.2", "chrono-node": "^2.7.6", "croner": "^8.1.0", "discord.js": "^14.15.3", diff --git a/src/service/configService.ts b/src/service/configService.ts index ce92a75f..8f113bea 100644 --- a/src/service/configService.ts +++ b/src/service/configService.ts @@ -2,6 +2,8 @@ import * as fs from "node:fs/promises"; import * as path from "node:path"; import { parseArgs } from "node:util"; +import * as JSONC from "@std/jsonc"; + import type { Snowflake, ActivityType } from "discord.js"; import log from "@log"; @@ -27,7 +29,7 @@ export async function readConfig() { } try { - return JSON.parse(jsonString) as Config; + return JSONC.parse(jsonString) as unknown as Config; } catch (e) { log.error(e, "Config is not valid JSON. Stopping..."); return process.exit(1);