mirror of https://github.com/clickscodes/nucleus
parent
5be5eca351
commit
6fb3e07eab
@ -0,0 +1,147 @@
|
||||
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
|
||||
},
|
||||
"allowed": {
|
||||
"users": data.wordfilter.ignore.members.map(user => user.toString()),
|
||||
"roles": data.wordfilter.ignore.roles.map(role => role.toString()),
|
||||
"channels": data.wordfilter.ignore.channels.map(channel => channel.toString())
|
||||
}
|
||||
},
|
||||
"invite": {
|
||||
"enabled": data.invite ? data.invite.enabled : false,
|
||||
"allowed": {
|
||||
"users": data.invite ? data.invite.whitelist.members.map(user => user.toString()) : [],
|
||||
"channels": data.invite ? data.invite.whitelist.channels.map(channel => channel.toString()) : [],
|
||||
"roles": data.invite ? data.invite.whitelist.roles.map(role => role.toString()) : []
|
||||
}
|
||||
},
|
||||
"pings": {
|
||||
"mass": 5,
|
||||
"everyone": true,
|
||||
"roles": true,
|
||||
"allowed": {
|
||||
"roles": [],
|
||||
"rolesToMention": null,
|
||||
"users": null,
|
||||
"channels": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"welcome": {
|
||||
"enabled": data.welcome ? (data.welcome.message.text !== null) : false,
|
||||
"verificationRequired": {
|
||||
"message": null,
|
||||
"role": null,
|
||||
},
|
||||
"welcomeRole": 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" })));
|
||||
@ -0,0 +1,389 @@
|
||||
{
|
||||
"name": "hi",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "hi",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"fs": "^0.0.1-security",
|
||||
"mongodb": "^4.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "17.0.41",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.41.tgz",
|
||||
"integrity": "sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw=="
|
||||
},
|
||||
"node_modules/@types/webidl-conversions": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
|
||||
"integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
|
||||
},
|
||||
"node_modules/@types/whatwg-url": {
|
||||
"version": "8.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
|
||||
"integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"@types/webidl-conversions": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/bson": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
|
||||
"integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
|
||||
"dependencies": {
|
||||
"buffer": "^5.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"node_modules/denque": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
|
||||
"integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/fs": {
|
||||
"version": "0.0.1-security",
|
||||
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
|
||||
"integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
|
||||
},
|
||||
"node_modules/ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/ip": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
|
||||
"integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
|
||||
},
|
||||
"node_modules/memory-pager": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
||||
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/mongodb": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz",
|
||||
"integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==",
|
||||
"dependencies": {
|
||||
"bson": "^4.6.3",
|
||||
"denque": "^2.0.1",
|
||||
"mongodb-connection-string-url": "^2.5.2",
|
||||
"socks": "^2.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.9.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"saslprep": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/mongodb-connection-string-url": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
|
||||
"integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
|
||||
"dependencies": {
|
||||
"@types/whatwg-url": "^8.2.1",
|
||||
"whatwg-url": "^11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/saslprep": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
|
||||
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"sparse-bitfield": "^3.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/smart-buffer": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
|
||||
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
|
||||
"engines": {
|
||||
"node": ">= 6.0.0",
|
||||
"npm": ">= 3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/socks": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
|
||||
"integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
|
||||
"dependencies": {
|
||||
"ip": "^1.1.5",
|
||||
"smart-buffer": "^4.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0",
|
||||
"npm": ">= 3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sparse-bitfield": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
|
||||
"integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"memory-pager": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/tr46": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
|
||||
"integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
|
||||
"dependencies": {
|
||||
"punycode": "^2.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
|
||||
"integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/whatwg-url": {
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
|
||||
"integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
|
||||
"dependencies": {
|
||||
"tr46": "^3.0.0",
|
||||
"webidl-conversions": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "17.0.41",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.41.tgz",
|
||||
"integrity": "sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw=="
|
||||
},
|
||||
"@types/webidl-conversions": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
|
||||
"integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
|
||||
},
|
||||
"@types/whatwg-url": {
|
||||
"version": "8.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
|
||||
"integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@types/webidl-conversions": "*"
|
||||
}
|
||||
},
|
||||
"base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||
},
|
||||
"bson": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
|
||||
"integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
|
||||
"requires": {
|
||||
"buffer": "^5.6.0"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"requires": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"denque": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
|
||||
"integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
|
||||
},
|
||||
"fs": {
|
||||
"version": "0.0.1-security",
|
||||
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
|
||||
"integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
|
||||
},
|
||||
"ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
|
||||
},
|
||||
"ip": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
|
||||
"integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
|
||||
},
|
||||
"memory-pager": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
||||
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
|
||||
"optional": true
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz",
|
||||
"integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==",
|
||||
"requires": {
|
||||
"bson": "^4.6.3",
|
||||
"denque": "^2.0.1",
|
||||
"mongodb-connection-string-url": "^2.5.2",
|
||||
"saslprep": "^1.0.3",
|
||||
"socks": "^2.6.2"
|
||||
}
|
||||
},
|
||||
"mongodb-connection-string-url": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
|
||||
"integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
|
||||
"requires": {
|
||||
"@types/whatwg-url": "^8.2.1",
|
||||
"whatwg-url": "^11.0.0"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||
},
|
||||
"saslprep": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
|
||||
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"sparse-bitfield": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"smart-buffer": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
|
||||
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
|
||||
},
|
||||
"socks": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
|
||||
"integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
|
||||
"requires": {
|
||||
"ip": "^1.1.5",
|
||||
"smart-buffer": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"sparse-bitfield": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
|
||||
"integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"memory-pager": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"tr46": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
|
||||
"integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
|
||||
"integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
|
||||
},
|
||||
"whatwg-url": {
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
|
||||
"integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
|
||||
"requires": {
|
||||
"tr46": "^3.0.0",
|
||||
"webidl-conversions": "^7.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "hi",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"fs": "^0.0.1-security",
|
||||
"mongodb": "^4.7.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
{
|
||||
"id": "default",
|
||||
"version": 1,
|
||||
"singleEventNotifications": {
|
||||
"statsChannelDeleted": false
|
||||
},
|
||||
"filters": {
|
||||
"images": {
|
||||
"NSFW": false,
|
||||
"size": false
|
||||
},
|
||||
"malware": false,
|
||||
"wordFilter": {
|
||||
"enabled": false,
|
||||
"words": {
|
||||
"strict": [],
|
||||
"loose": []
|
||||
},
|
||||
"allowed": {
|
||||
"users": [],
|
||||
"roles": [],
|
||||
"channels": []
|
||||
}
|
||||
},
|
||||
"invite": {
|
||||
"enabled": false,
|
||||
"allowed": {
|
||||
"users": [],
|
||||
"channels": [],
|
||||
"roles": []
|
||||
}
|
||||
},
|
||||
"pings": {
|
||||
"mass": 5,
|
||||
"everyone": true,
|
||||
"roles": true,
|
||||
"allowed": {
|
||||
"roles": [],
|
||||
"rolesToMention": [],
|
||||
"users": [],
|
||||
"channels": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"welcome": {
|
||||
"enabled": false,
|
||||
"verificationRequired": {
|
||||
"message": null,
|
||||
"role": null
|
||||
},
|
||||
"welcomeRole": null,
|
||||
"channel": null,
|
||||
"message": null
|
||||
},
|
||||
"stats": [],
|
||||
"logging": {
|
||||
"logs": {
|
||||
"enabled": true,
|
||||
"channel": null,
|
||||
"toLog": "3fffff"
|
||||
},
|
||||
"staff": {
|
||||
"channel": null
|
||||
}
|
||||
},
|
||||
"verify": {
|
||||
"enabled": false,
|
||||
"role": null
|
||||
},
|
||||
"tickets": {
|
||||
"enabled": false,
|
||||
"category": null,
|
||||
"types": "3f",
|
||||
"customTypes": null,
|
||||
"supportRole": null,
|
||||
"maxTickets": 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": {}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
import { HaikuClient } from 'jshaiku';
|
||||
import { Intents } from 'discord.js';
|
||||
import config from '../config/main.json' assert {type: 'json'};
|
||||
|
||||
const client = new HaikuClient({
|
||||
intents: new Intents(32767).bitfield, // This is a way of specifying all intents w/o having to type them out
|
||||
}, config);
|
||||
|
||||
export default client;
|
||||
@ -0,0 +1,180 @@
|
||||
import { Collection, Db, MongoClient } from 'mongodb';
|
||||
|
||||
|
||||
export const Entry = data => {
|
||||
data = data ?? {};
|
||||
return {
|
||||
get(target, prop, receiver) {
|
||||
let dataToReturn = data[prop]
|
||||
if (dataToReturn === null ) return Reflect.get(target, prop, receiver);
|
||||
if (typeof dataToReturn === "object" && !Array.isArray(dataToReturn)) dataToReturn = new Proxy(
|
||||
Reflect.get(target, prop, receiver),
|
||||
Entry(dataToReturn),
|
||||
)
|
||||
return dataToReturn ?? Reflect.get(target, prop, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export default class Database {
|
||||
mongoClient: MongoClient;
|
||||
database: Db;
|
||||
guilds: Collection<GuildConfig>;
|
||||
defaultData: GuildConfig;
|
||||
|
||||
constructor(url) {
|
||||
this.mongoClient = new MongoClient(url);
|
||||
}
|
||||
|
||||
async connect() {
|
||||
await this.mongoClient.connect()
|
||||
this.database = this.mongoClient.db("Nucleus");
|
||||
this.guilds = this.database.collection<GuildConfig>("guilds");
|
||||
await this.guilds.createIndex({ id: "text" }, { unique: true });
|
||||
this.defaultData = (await import("../config/default.json", { assert: { type: "json" }})).default as unknown as GuildConfig;
|
||||
return this;
|
||||
}
|
||||
|
||||
async read(guild: string) {
|
||||
let entry = await this.guilds.findOne({ id: guild });
|
||||
return new Proxy(this.defaultData, Entry(entry)) as unknown as GuildConfig
|
||||
}
|
||||
|
||||
async write(guild: string, config: GuildConfig) {
|
||||
await this.guilds.updateOne({ id: guild }, { $set: config }, { upsert: true });
|
||||
}
|
||||
}
|
||||
|
||||
export interface GuildConfig {
|
||||
id: string,
|
||||
version: number,
|
||||
singleEventNotifications: {
|
||||
statsChannelDeleted: boolean
|
||||
}
|
||||
filters: {
|
||||
images: {
|
||||
NSFW: boolean,
|
||||
size: boolean
|
||||
},
|
||||
malware: boolean,
|
||||
wordFilter: {
|
||||
enabled: boolean,
|
||||
words: {
|
||||
strict: string[],
|
||||
loose: string[]
|
||||
},
|
||||
allowed: {
|
||||
users: string[],
|
||||
roles: string[],
|
||||
channels: string[]
|
||||
}
|
||||
},
|
||||
invite: {
|
||||
enabled: boolean,
|
||||
allowed: {
|
||||
users: string[],
|
||||
channels: string[],
|
||||
roles: string[]
|
||||
}
|
||||
},
|
||||
pings: {
|
||||
mass: number,
|
||||
everyone: boolean,
|
||||
roles: boolean,
|
||||
allowed: {
|
||||
roles: string[],
|
||||
rolesToMention: string[],
|
||||
users: string[],
|
||||
channels: string[]
|
||||
}
|
||||
}
|
||||
}
|
||||
welcome: {
|
||||
enabled: boolean,
|
||||
verificationRequired: {
|
||||
message: boolean,
|
||||
role: string
|
||||
},
|
||||
welcomeRole: string,
|
||||
channel: string,
|
||||
message: string
|
||||
}
|
||||
stats: {
|
||||
enabled: boolean,
|
||||
channel: string,
|
||||
text: string
|
||||
}[]
|
||||
logging: {
|
||||
logs: {
|
||||
enabled: boolean,
|
||||
channel: string,
|
||||
toLog: string
|
||||
},
|
||||
staff: {
|
||||
channel: string
|
||||
}
|
||||
}
|
||||
verify: {
|
||||
enabled: boolean,
|
||||
role: string
|
||||
}
|
||||
tickets: {
|
||||
enabled: boolean,
|
||||
category: string,
|
||||
types: string,
|
||||
customTypes: string[],
|
||||
supportRole: string,
|
||||
maxTickets: number
|
||||
}
|
||||
moderation: {
|
||||
mute: {
|
||||
timeout: boolean,
|
||||
role: string,
|
||||
text: string,
|
||||
link: string
|
||||
},
|
||||
kick: {
|
||||
text: string,
|
||||
link: string
|
||||
},
|
||||
ban: {
|
||||
text: string,
|
||||
link: string
|
||||
},
|
||||
softban: {
|
||||
text: string,
|
||||
link: string
|
||||
},
|
||||
warn: {
|
||||
text: string,
|
||||
link: string
|
||||
},
|
||||
role: {
|
||||
role: string
|
||||
}
|
||||
}
|
||||
tracks: {
|
||||
name: string,
|
||||
retainPrevious: boolean,
|
||||
nullable: boolean,
|
||||
track: string[],
|
||||
manageableBy: string[]
|
||||
}[]
|
||||
roleMenu: {
|
||||
enabled: boolean,
|
||||
allowWebUI: boolean,
|
||||
options: {
|
||||
name: string,
|
||||
description: string,
|
||||
min: number,
|
||||
max: number,
|
||||
options: {
|
||||
name: string,
|
||||
description: string,
|
||||
role: string
|
||||
}[]
|
||||
}[]
|
||||
}
|
||||
tags: {}
|
||||
};
|
||||
@ -1,165 +1,5 @@
|
||||
import client from './client.js';
|
||||
|
||||
export default async function readConfig(guild: string): Promise<any> {
|
||||
|
||||
let config = {
|
||||
singleEventNotifications: {
|
||||
statsChannelDeleted: false
|
||||
},
|
||||
filters: {
|
||||
images: {
|
||||
NSFW: true,
|
||||
size: true
|
||||
},
|
||||
malware: true,
|
||||
wordFilter: {
|
||||
enabled: true,
|
||||
words: {
|
||||
strict: [],
|
||||
loose: []
|
||||
},
|
||||
allowed: {
|
||||
users: [],
|
||||
roles: [],
|
||||
channels: []
|
||||
}
|
||||
},
|
||||
invite: {
|
||||
enabled: false,
|
||||
allowed: {
|
||||
users: [],
|
||||
channels: [],
|
||||
roles: []
|
||||
}
|
||||
},
|
||||
pings: {
|
||||
mass: 5,
|
||||
everyone: true,
|
||||
roles: true,
|
||||
allowed: {
|
||||
roles: [],
|
||||
rolesToMention: [],
|
||||
users: [],
|
||||
channels: []
|
||||
}
|
||||
}
|
||||
},
|
||||
welcome: {
|
||||
enabled: true,
|
||||
verificationRequired: {
|
||||
message: false,
|
||||
role: false
|
||||
},
|
||||
welcomeRole: null,
|
||||
channel: '895209752315961344', // null, channel ID or 'dm'
|
||||
message: "Welcome to the server, {@}!"
|
||||
},
|
||||
stats: [
|
||||
{
|
||||
enabled: true,
|
||||
channel: '951910554291818526',
|
||||
text: "{count} members | {count:bots} bots | {count:humans} humans"
|
||||
}
|
||||
],
|
||||
logging: {
|
||||
logs: {
|
||||
enabled: true,
|
||||
channel: '952247098437427260',
|
||||
toLog: "3fffff" // "3ffffe" = - channelUpdate, "3fffff" = all
|
||||
},
|
||||
staff: {
|
||||
channel: "895212366252367933"
|
||||
}
|
||||
},
|
||||
verify: {
|
||||
enabled: true,
|
||||
role: '934941369137524816',
|
||||
},
|
||||
tickets: {
|
||||
enabled: true,
|
||||
category: "952302254302584932",
|
||||
types: "3f",
|
||||
customTypes: null,
|
||||
supportRole: null,
|
||||
maxTickets: 5
|
||||
},
|
||||
moderation: {
|
||||
mute: {
|
||||
timeout: true,
|
||||
role: "934941369137524816", // TODO: Remove this role after the time
|
||||
text: null,
|
||||
link: null
|
||||
},
|
||||
kick: {
|
||||
text: "Appeal here",
|
||||
link: "https://clicks.codes"
|
||||
},
|
||||
ban: {
|
||||
text: null,
|
||||
link: null
|
||||
},
|
||||
softban: {
|
||||
text: null,
|
||||
link: null
|
||||
},
|
||||
warn: {
|
||||
text: null,
|
||||
link: null
|
||||
},
|
||||
role: {
|
||||
role: "934941369137524816"
|
||||
},
|
||||
},
|
||||
tracks: [
|
||||
{
|
||||
name: "Moderation",
|
||||
retainPrevious: false,
|
||||
nullable: true,
|
||||
track: [
|
||||
"934941369137524816",
|
||||
"934941399806246984",
|
||||
"934941408849186856",
|
||||
"934941466734764092"
|
||||
],
|
||||
manageableBy: []
|
||||
},
|
||||
{
|
||||
name: "Verification",
|
||||
retainPrevious: false,
|
||||
nullable: true,
|
||||
track: [
|
||||
"963166531318067250"
|
||||
],
|
||||
manageableBy: []
|
||||
}
|
||||
],
|
||||
roleMenu: {
|
||||
enabled: true,
|
||||
allowWebUI: true,
|
||||
options: [
|
||||
{
|
||||
name: "Gender",
|
||||
description: "What's your gender?",
|
||||
min: 1,
|
||||
max: 1,
|
||||
options: [
|
||||
{ name: "Male", role: "959901318019948574" },
|
||||
{ name: "Female", role: "959901346000154674" },
|
||||
{ name: "Non Binary", description: "Better than the others", role: "959901378363420704"}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Pick",
|
||||
min: 0,
|
||||
max: 4,
|
||||
options: [
|
||||
{ name: "Test Role 1", role: "934941369137524816" },
|
||||
{ name: "Test Role 2", role: "934941399806246984" },
|
||||
{ name: "Test Role 3", role: "934941408849186856" },
|
||||
{ name: "Test Role 4", role: "934941466734764092" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
return config;
|
||||
return await client.database.read(guild);
|
||||
}
|
||||
|
||||
Loading…
Reference in new issue