diff --git a/src/utils/scanners.ts b/src/utils/scanners.ts
index 97e9bf4..5abd726 100644
--- a/src/utils/scanners.ts
+++ b/src/utils/scanners.ts
@@ -8,23 +8,23 @@
 const __dirname = path.dirname(__filename);
 
 export async function testNSFW(link: string): Promise<JSON> {
-	const image = (await (await fetch(link)).buffer()).toString('base64')
-	let fileName = generateFileName(link.split('/').pop().split('.').pop())
-	let p = path.join(__dirname, '/temp', fileName)
-	writeFileSync(p, image, 'base64')
-	let result = await us.nsfw.file(p)
+    const image = (await (await fetch(link)).buffer()).toString('base64')
+    let fileName = generateFileName(link.split('/').pop().split('.').pop())
+    let p = path.join(__dirname, '/temp', fileName)
+    writeFileSync(p, image, 'base64')
+    let result = await us.nsfw.file(p)
     return result
 }
 
 export async function testMalware(link: string): Promise<JSON> {
-	const file = (await (await fetch(link)).buffer()).toString('base64')
-	let fileName = generateFileName(link.split('/').pop().split('.').pop())
-	let p = path.join(__dirname, '/temp', fileName)
-	writeFileSync(p, file, 'base64')
-	let result = await us.malware.file(p)
+    const file = (await (await fetch(link)).buffer()).toString('base64')
+    let fileName = generateFileName(link.split('/').pop().split('.').pop())
+    let p = path.join(__dirname, '/temp', fileName)
+    writeFileSync(p, file, 'base64')
+    let result = await us.malware.file(p)
     return result
 }
 
 export async function testLink(link: string): Promise<JSON> {
-	return await us.link.scan(link)
+    return await us.link.scan(link)
 }
