Update to latest development (#23) (#38)
diff --git a/package.json b/package.json
index 2f63ea6..6457877 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,16 @@
{
"dependencies": {
- "@discordjs/rest": "^0.2.0-canary.0",
"@hokify/agenda": "^6.2.12",
+ "@tensorflow/tfjs": "^4.0.0",
+ "@tensorflow/tfjs-node": "^4.2.0",
"@total-typescript/ts-reset": "^0.3.7",
"@tsconfig/node18-strictest-esm": "^1.0.0",
"@types/node": "^18.14.6",
"@ungap/structured-clone": "^1.0.1",
"agenda": "^4.3.0",
"body-parser": "^1.20.0",
+ "canvas": "^2.11.0",
+ "clamscan": "^2.1.2",
"discord.js": "^14.7.1",
"eslint": "^8.21.0",
"express": "^4.18.1",
@@ -18,12 +21,11 @@
"mongodb": "^4.7.0",
"node-fetch": "^3.3.0",
"node-tesseract-ocr": "^2.2.1",
+ "nsfwjs": "2.4.2",
+ "seedrandom": "^3.0.5",
"structured-clone": "^0.2.2",
"systeminformation": "^5.17.3"
},
- "resolutions": {
- "discord-api-types": "0.37.23"
- },
"name": "nucleus",
"version": "0.0.1",
"description": "Nucleus: The core of your server",
@@ -38,7 +40,8 @@
"lint-list": "echo 'Style checking...'; prettier --check .; echo 'Linting...'; eslint src; echo 'To view errors in more detail, please run `yarn lint`'; true",
"lint-ci": "echo 'Style checking...' && prettier --check . && echo 'Linting...' && eslint src",
"setup": "node Installer.js",
- "win-force-build": "clear | rm -r dist | tsc-suppress"
+ "win-force-build": "clear | rm -r dist | tsc-suppress",
+ "audit-fix": "yarn-audit-fix"
},
"repository": {
"type": "git",
@@ -57,6 +60,7 @@
"private": false,
"type": "module",
"devDependencies": {
+ "@types/clamscan": "^2.0.4",
"@types/lodash": "^4.14.191",
"@typescript-eslint/eslint-plugin": "^5.32.0",
"@typescript-eslint/parser": "^5.32.0",
@@ -64,6 +68,7 @@
"prettier": "^2.7.1",
"prettier-eslint": "^15.0.1",
"tsc-suppress": "^1.0.7",
- "typescript": "^4.9.4"
+ "typescript": "^4.9.4",
+ "yarn-audit-fix": "^9.3.9"
}
}
diff --git a/src/reflex/scanners.ts b/src/reflex/scanners.ts
index 71e63b4..450a4af 100644
--- a/src/reflex/scanners.ts
+++ b/src/reflex/scanners.ts
@@ -5,6 +5,9 @@
import type Discord from "discord.js";
import client from "../utils/client.js";
import { createHash } from "crypto";
+import * as nsfwjs from 'nsfwjs';
+import * as clamscan from 'clamscan'
+import * as tf from "@tensorflow/tfjs-node";
interface NSFWSchema {
nsfw: boolean;
@@ -15,32 +18,18 @@
errored?: boolean;
}
+const model = await nsfwjs.load();
+
export async function testNSFW(link: string): Promise<NSFWSchema> {
- const [p, hash] = await saveAttachment(link);
+ const [fileName, hash] = await saveAttachment(link);
const alreadyHaveCheck = await client.database.scanCache.read(hash);
if (alreadyHaveCheck) return { nsfw: alreadyHaveCheck.data };
- const data = new URLSearchParams();
- const r = createReadStream(p);
- data.append("file", r.read(fs.statSync(p).size));
- const result = await fetch("https://unscan.p.rapidapi.com/", {
- method: "POST",
- headers: {
- "X-RapidAPI-Key": client.config.rapidApiKey,
- "X-RapidAPI-Host": "unscan.p.rapidapi.com"
- },
- body: data
- })
- .then((response) =>
- response.status === 200 ? (response.json() as Promise<NSFWSchema>) : { nsfw: false, errored: true }
- )
- .catch((err) => {
- console.error(err);
- return { nsfw: false, errored: true };
- });
- if (!result.errored) {
- client.database.scanCache.write(hash, result.nsfw);
- }
- return { nsfw: result.nsfw };
+
+ // const image = tf.node.decodePng()
+
+ // const result = await model.classify(image)
+
+ return { nsfw: false };
}
export async function testMalware(link: string): Promise<MalwareSchema> {