← back to browse
goat command grade C

sing

Play and download audio songs

3
views
0
likes
3
installs

Aliases: song, music

analysis — static scan, nothing executed
0 grade C
Risky — serious capabilities found, review before installing
Security 57
Privacy 93
Quality 100
Maintenance 90
Community 16
high Shell access 2×

Spawns operating-system processes through child_process. A command running shell code can read or change anything the bot's account can.

L5const { spawn, spawnSync } = require("child_process");
L24const has = (cmd, flag = "--version") => { try { return spawnSync(cmd, [flag], { stdio: "ignore", timeout: 8000 }).status === 0; } catch (e) { return false; …
medium Deletes files

Calls fs.rm / unlink / rmdir. Check what path it deletes and whether a user can influence it.

L25const safeUnlink = (f) => { try { if (f && fs.existsSync(f)) fs.unlinkSync(f); } catch (e) {} };
low Environment variable access 9×

Reads process.env. Fine on its own; worth a look if the values are sent anywhere.

L12const YTDLP = process.env.YTDLP_PATH || "yt-dlp";
L13const MAX_MIN = Number(process.env.SING_MAX_MIN || 10);
L14const MAX_MB = Number(process.env.SING_MAX_MB || 24);
L15const QUEUE_MAX = Number(process.env.SING_QUEUE_MAX || 5);
L16const FORMAT = String(process.env.SING_FORMAT || "m4a").toLowerCase() === "mp3" ? "mp3" : "m4a";
low Filesystem access

Reads or writes files on the machine running the bot.

L3const fs = require("fs-extra");
capabilities — what this file can do, regardless of intent
Network Filesystem Shell Env vars Dynamic code Session data Installs packages Process control
dependencies

@distube/ytdl-core, fs-extra, youtubei.js, yt-search

checks
Exports a command/module
Handles errors (try/catch or .catch)
Readable, not minified
Has explanatory comments
No deprecated dependencies
Reasonable size (< 200 KB)
raw source — loaded on demand
Loading source…

View raw file · View analysis as JSON