mirror of https://github.com/clickscodes/nucleus
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.4 KiB
133 lines
4.4 KiB
import fs from 'fs';
|
|
import { MongoClient } from 'mongodb';
|
|
|
|
const mongoClient = new MongoClient('mongodb://127.0.0.1:27017/local');
|
|
await mongoClient.connect()
|
|
const database = mongoClient.db("Nucleus");
|
|
const collection = database.collection("migrationTesting");
|
|
|
|
// Loop through all files in the oldData folder
|
|
const files = fs.readdirSync('./oldData');
|
|
let x = 0
|
|
for (const file of files) {
|
|
console.log(`┌ Processing file ${x} of ${files.length - 1} | ${file}`);
|
|
// Read the file as a json
|
|
let data
|
|
try {
|
|
data = JSON.parse(fs.readFileSync(`./oldData/${file}`));
|
|
} catch {
|
|
console.log(`└ Error reading file ${file}`);
|
|
x++
|
|
continue;
|
|
}
|
|
// Check if data version is 3
|
|
if (data.version !== 3) {
|
|
console.log(`├ Version was too old on ${file}`);
|
|
console.log(`└ Skipping file`);
|
|
x++;
|
|
continue
|
|
}
|
|
// Convert to the new format
|
|
const newData = {
|
|
"id": data.guild_info.id.toString(),
|
|
"version": 1,
|
|
"singleEventNotifications": {
|
|
"statsChannelDeleted": false
|
|
},
|
|
"filters": {
|
|
"images": {
|
|
"NSFW": !data.images.nsfw,
|
|
"size": data.images.toosmall
|
|
},
|
|
"wordFilter": {
|
|
"enabled": true,
|
|
"words": {
|
|
"strict": data.wordfilter.strict,
|
|
"loose": data.wordfilter.soft
|
|
},
|
|
},
|
|
"invite": {
|
|
"enabled": data.invite ? data.invite.enabled : false,
|
|
"channels": data.invite ? data.invite.whitelist.channels.map(channel => channel.toString()) : [],
|
|
},
|
|
"pings": {
|
|
"mass": 5,
|
|
"everyone": true,
|
|
"roles": true
|
|
}
|
|
},
|
|
"welcome": {
|
|
"enabled": data.welcome ? (data.welcome.message.text !== null) : false,
|
|
"verificationRequired": {
|
|
"message": null,
|
|
"role": null,
|
|
},
|
|
"role": data.welcome ? (data.welcome.role !== null ? data.welcome.role.toString() : null) : null,
|
|
"channel": data.welcome ? (data.welcome.message.text !== null ? data.welcome.message.channel.toString() : null) : null,
|
|
"message": data.welcome ? (data.welcome.message.text) : null
|
|
},
|
|
"stats": {},
|
|
"logging": {
|
|
"logs": {
|
|
"enabled": true,
|
|
"channel": data.log_info.log_channel ? data.log_info.log_channel.toString() : null,
|
|
"toLog": "3fffff"
|
|
},
|
|
"staff": {
|
|
"channel": data.log_info.staff ? data.log_info.staff.toString() : null,
|
|
}
|
|
},
|
|
"verify": {
|
|
"enabled": data.verify_role !== null,
|
|
"role": data.verify_role ? data.verify_role.toString() : null,
|
|
},
|
|
"tickets": {
|
|
"enabled": data.modmail ? (data.modmail.cat !== null) : null,
|
|
"category": data.modmail ? (data.modmail.cat !== null ? data.modmail.cat.toString() : null) : null,
|
|
"types": "3f",
|
|
"customTypes": null,
|
|
"supportRole": data.modmail ? (data.modmail.mention !== null ? data.modmail.mention.toString() : null) : null,
|
|
"maxTickets": data.modmail ? (data.modmail.max) : 5
|
|
},
|
|
"moderation": {
|
|
"mute": {
|
|
"timeout": true,
|
|
"role": null,
|
|
"text": null,
|
|
"link": null
|
|
},
|
|
"kick": {
|
|
"text": null,
|
|
"link": null
|
|
},
|
|
"ban": {
|
|
"text": null,
|
|
"link": null
|
|
},
|
|
"softban": {
|
|
"text": null,
|
|
"link": null
|
|
},
|
|
"warn": {
|
|
"text": null,
|
|
"link": null
|
|
},
|
|
"role": {
|
|
"role": null
|
|
}
|
|
},
|
|
"tracks": [],
|
|
"roleMenu": [],
|
|
"tags": data.tags
|
|
}
|
|
// Insert the new data into the database
|
|
await collection.updateOne({ id: data.guild_info.id.toString() }, { $set: newData }, { upsert: true });
|
|
// Delete the old file
|
|
fs.unlinkSync(`./oldData/${file}`);
|
|
console.log(`└ Successfully migrated file ${file}`);
|
|
x++;
|
|
}
|
|
|
|
|
|
// console.log((await collection.findOne({ id: "your mother" })));
|