added migration
diff --git a/.gitignore b/.gitignore
index 6deb598..d73f2ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
!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<ReturnType<typeof client.database.guilds.read>>;
+ // console.log(rsmToNucleus)
+ const merged = _.merge(nucleusData, rsmToNucleus);
+ // console.log(merged)
+
}