From 78c1389aede369904ff76bbf0f1f44632c8eafc7 Mon Sep 17 00:00:00 2001 From: TheCodedProf Date: Sun, 5 Mar 2023 14:43:06 -0500 Subject: [PATCH] added migration --- .gitignore | 1 + src/utils/migration/migration.ts | 73 ++++++++++++++++++++++++++++++-- 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 6deb598..d73f2ea 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ src/config/* !src/config/format.ts !src/config/default.ts !src/config/emojis.json +src/utils/migration/data src/config/main.ts .vscode/ .vim/ diff --git a/src/utils/migration/migration.ts b/src/utils/migration/migration.ts index ad2927b..1edc068 100644 --- a/src/utils/migration/migration.ts +++ b/src/utils/migration/migration.ts @@ -1,10 +1,77 @@ import * as fs from 'fs'; +import client from "../client.js"; +import _ from "lodash"; const dir = './data'; const files = fs.readdirSync(dir); for (const file of files) { - const rsmData = fs.readFileSync(`${dir}/${file}`, 'utf8'); - const nucleusData = "" - + let rsmData; + try { + rsmData = JSON.parse(fs.readFileSync(`${dir}/${file}`, 'utf8')); + } catch { continue } + if (!rsmData.version || rsmData.version < 3) continue; + const nucleusData = await client.database.guilds.read(rsmData.guild_info.id) + const rsmToNucleus = { + id: rsmData.guild_info.id, + version: 1, + singleEventNotifications: {}, + filters: { + images: { + NSFW: rsmData.images?.nsfw, + size: rsmData.images?.toosmall, + }, + malware: null, + wordFilter: { + enabled: true, + words: { + strict: rsmData.wordfilter?.strict, + loose: rsmData.wordfilter?.soft, + }, + allowed: { + users: rsmData.wordfilter?.ignore?.members, + roles: rsmData.wordfilter?.ignore?.roles, + channels: rsmData.wordfilter?.ignore?.channels, + }, + }, + invite: { + enabled: rsmData.invite?.enabled, + allowed: { + channels: rsmData.invite?.whitelist?.members, + roles: rsmData.invite?.whitelist?.roles, + users: rsmData.invite?.whitelist?.channels, + }, + } + }, + welcome: { + enabled: true, + role: rsmData.welcome?.role, + channel: rsmData.welcome?.message?.channel, + message: rsmData.welcome?.message?.text ?? null, + }, + logging: { + logs: { + enabled: true, + channel: rsmData.log_info?.log_channel, + }, + staff: { + channel: rsmData.log_info?.staff, + } + }, + verify: { + enabled: true, + role: rsmData.verify_role, + }, + tickets: { + enabled: true, + category: rsmData.modmail?.cat, + supportRole: rsmData.modmail?.mention, + maxTickets: rsmData.modmail?.max, + }, + tags: rsmData.tags + } as Partial>; + // console.log(rsmToNucleus) + const merged = _.merge(nucleusData, rsmToNucleus); + // console.log(merged) + }