{ "name": "discord-voice-recorder", "version": "1.0.0", "description": "Discord bot that joins a voice channel and records audio", "main": "src/index.ts", "packageManager": "pnpm@10.25.0", "scripts": { "dev": "tsx watch src/index.ts", "start": "tsx src/index.ts", "build": "tsc --outDir dist", "typecheck": "tsc --noEmit", "lint": "biome check --diagnostic-level=error .", "format": "biome format --write .", "test": "vitest run", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:migrate:programmatic": "tsx src/database/migrate.ts", "db:studio": "drizzle-kit studio" }, "dependencies": { "@discordjs/opus": "^0.10.0", "@discordjs/voice": "^0.19.1", "@snazzah/davey": "^0.1.10", "@types/pg": "^8.20.0", "better-sqlite3": "^12.10.0", "class-transformer": "^0.5.1", "class-validator": "^0.15.1", "discord.js-selfbot-v13": "^3.7.1", "dotenv": "^17.4.2", "drizzle-orm": "^0.45.2", "express": "^5.2.1", "fluent-ffmpeg": "^2.1.3", "helmet": "^8.1.0", "libsodium-wrappers": "^0.8.2", "p-retry": "^6.2.0", "pg": "^8.20.0", "pino": "^9.4.0", "pino-http": "^11.0.0", "prism-media": "2.0.0-alpha.0", "prom-client": "^15.1.3", "sodium-native": "^4.3.2", "ws": "^8.20.1", "zod": "^4.4.3" }, "devDependencies": { "@biomejs/biome": "latest", "@types/better-sqlite3": "^7.6.13", "@types/express": "^5.0.6", "@types/fluent-ffmpeg": "^2.1.28", "@types/node": "^24.10.1", "@types/ws": "^8.18.1", "drizzle-kit": "^0.31.10", "pino-pretty": "^10.3.1", "tsx": "^4.20.6", "vitest": "latest" } }