feat: implement session-level recording with self/bot audio filtering
- Add RecordingSession tracking for guild-level audio mixing - Filter out self user and bot users before subscribing to audio streams - Register segments with session metadata for post-processing - Finalize recording sessions on connection destroy or explicit stop - Update test mocks to properly simulate stream chain and constructors - Remove mock-crc import (no longer needed with current dependencies) - Add 'type: module' to package.json for ES module support Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
2744e7035b
commit
8e1f5adaa4
@@ -2,6 +2,7 @@
|
|||||||
"name": "discord-voice-recorder",
|
"name": "discord-voice-recorder",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Discord bot that joins a voice channel and records audio",
|
"description": "Discord bot that joins a voice channel and records audio",
|
||||||
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"packageManager": "pnpm@10.25.0",
|
"packageManager": "pnpm@10.25.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Generated
+10
-37
@@ -76,7 +76,7 @@ importers:
|
|||||||
version: 19.2.6(react@19.2.6)
|
version: 19.2.6(react@19.2.6)
|
||||||
sodium-native:
|
sodium-native:
|
||||||
specifier: ^5.1.0
|
specifier: ^5.1.0
|
||||||
version: 5.1.0(bare-events@2.8.3)(bare-url@2.4.3)
|
version: 5.1.0(bare-events@2.8.3)
|
||||||
vite:
|
vite:
|
||||||
specifier: ^8.0.13
|
specifier: ^8.0.13
|
||||||
version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.0)(tsx@4.22.0)(yaml@2.9.0)
|
version: 8.0.13(@types/node@25.8.0)(esbuild@0.28.0)(tsx@4.22.0)(yaml@2.9.0)
|
||||||
@@ -1760,13 +1760,6 @@ packages:
|
|||||||
bare-url:
|
bare-url:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
bare-os@3.9.1:
|
|
||||||
resolution: {integrity: sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==}
|
|
||||||
engines: {bare: '>=1.14.0'}
|
|
||||||
|
|
||||||
bare-path@3.0.0:
|
|
||||||
resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
|
|
||||||
|
|
||||||
bare-semver@1.0.3:
|
bare-semver@1.0.3:
|
||||||
resolution: {integrity: sha512-HS/A30bi2+PiRJfU6R4+Kp+6KeLSCSByjYM2iiobOKzLAvtu1CT+S8xWfiU7wz0erknjkUoC+yXy108tzIuP5Q==}
|
resolution: {integrity: sha512-HS/A30bi2+PiRJfU6R4+Kp+6KeLSCSByjYM2iiobOKzLAvtu1CT+S8xWfiU7wz0erknjkUoC+yXy108tzIuP5Q==}
|
||||||
|
|
||||||
@@ -1788,9 +1781,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-LdtnnEEYldOc87Dr4GpsKnStStZk3zfgoEMXy8yvEZkXrcCv9RtYDrUYWFsBQHtaB0s1EUWmcvS6XmEZYIj3Bw==}
|
resolution: {integrity: sha512-LdtnnEEYldOc87Dr4GpsKnStStZk3zfgoEMXy8yvEZkXrcCv9RtYDrUYWFsBQHtaB0s1EUWmcvS6XmEZYIj3Bw==}
|
||||||
engines: {bare: '>=1.2.0'}
|
engines: {bare: '>=1.2.0'}
|
||||||
|
|
||||||
bare-url@2.4.3:
|
|
||||||
resolution: {integrity: sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==}
|
|
||||||
|
|
||||||
base64-js@1.5.1:
|
base64-js@1.5.1:
|
||||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||||
|
|
||||||
@@ -5608,12 +5598,10 @@ snapshots:
|
|||||||
|
|
||||||
balanced-match@1.0.2: {}
|
balanced-match@1.0.2: {}
|
||||||
|
|
||||||
bare-addon-resolve@1.10.0(bare-url@2.4.3):
|
bare-addon-resolve@1.10.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
bare-module-resolve: 1.12.2(bare-url@2.4.3)
|
bare-module-resolve: 1.12.2
|
||||||
bare-semver: 1.0.3
|
bare-semver: 1.0.3
|
||||||
optionalDependencies:
|
|
||||||
bare-url: 2.4.3
|
|
||||||
|
|
||||||
bare-ansi-escapes@2.2.3(bare-events@2.8.3):
|
bare-ansi-escapes@2.2.3(bare-events@2.8.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -5644,19 +5632,9 @@ snapshots:
|
|||||||
- bare-events
|
- bare-events
|
||||||
- react-native-b4a
|
- react-native-b4a
|
||||||
|
|
||||||
bare-module-resolve@1.12.2(bare-url@2.4.3):
|
bare-module-resolve@1.12.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
bare-semver: 1.0.3
|
bare-semver: 1.0.3
|
||||||
optionalDependencies:
|
|
||||||
bare-url: 2.4.3
|
|
||||||
|
|
||||||
bare-os@3.9.1:
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
bare-path@3.0.0:
|
|
||||||
dependencies:
|
|
||||||
bare-os: 3.9.1
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
bare-semver@1.0.3: {}
|
bare-semver@1.0.3: {}
|
||||||
|
|
||||||
@@ -5671,11 +5649,6 @@ snapshots:
|
|||||||
|
|
||||||
bare-type@1.1.0: {}
|
bare-type@1.1.0: {}
|
||||||
|
|
||||||
bare-url@2.4.3:
|
|
||||||
dependencies:
|
|
||||||
bare-path: 3.0.0
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
base64-js@1.5.1: {}
|
base64-js@1.5.1: {}
|
||||||
|
|
||||||
before-after-hook@2.2.3: {}
|
before-after-hook@2.2.3: {}
|
||||||
@@ -7509,9 +7482,9 @@ snapshots:
|
|||||||
|
|
||||||
regexpp@2.0.1: {}
|
regexpp@2.0.1: {}
|
||||||
|
|
||||||
require-addon@1.2.0(bare-url@2.4.3):
|
require-addon@1.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
bare-addon-resolve: 1.10.0(bare-url@2.4.3)
|
bare-addon-resolve: 1.10.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bare-url
|
- bare-url
|
||||||
|
|
||||||
@@ -7745,10 +7718,10 @@ snapshots:
|
|||||||
astral-regex: 1.0.0
|
astral-regex: 1.0.0
|
||||||
is-fullwidth-code-point: 2.0.0
|
is-fullwidth-code-point: 2.0.0
|
||||||
|
|
||||||
sodium-native@5.1.0(bare-events@2.8.3)(bare-url@2.4.3):
|
sodium-native@5.1.0(bare-events@2.8.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
bare-assert: 1.2.0(bare-events@2.8.3)
|
bare-assert: 1.2.0(bare-events@2.8.3)
|
||||||
require-addon: 1.2.0(bare-url@2.4.3)
|
require-addon: 1.2.0
|
||||||
which-runtime: 1.3.2
|
which-runtime: 1.3.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bare-abort-controller
|
- bare-abort-controller
|
||||||
@@ -8179,7 +8152,7 @@ snapshots:
|
|||||||
werift-common@0.0.3:
|
werift-common@0.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@shinyoshiaki/jspack': 0.0.6
|
'@shinyoshiaki/jspack': 0.0.6
|
||||||
debug: 4.4.3
|
debug: 4.4.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@@ -8198,7 +8171,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@shinyoshiaki/jspack': 0.0.6
|
'@shinyoshiaki/jspack': 0.0.6
|
||||||
buffer-crc32: 1.0.0
|
buffer-crc32: 1.0.0
|
||||||
debug: 4.4.3
|
debug: 4.4.0
|
||||||
int64-buffer: 1.1.0
|
int64-buffer: 1.1.0
|
||||||
ip: 2.0.1
|
ip: 2.0.1
|
||||||
lodash: 4.18.1
|
lodash: 4.18.1
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import "./mock-crc";
|
|
||||||
import "libsodium-wrappers";
|
import "libsodium-wrappers";
|
||||||
import "@snazzah/davey";
|
import "@snazzah/davey";
|
||||||
import "dotenv/config";
|
import "dotenv/config";
|
||||||
|
|||||||
+2
-1
@@ -11,7 +11,8 @@
|
|||||||
"rootDir": "src",
|
"rootDir": "src",
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"jsx": "react-jsx"
|
"jsx": "react-jsx",
|
||||||
|
"resolveJsonModule": true
|
||||||
},
|
},
|
||||||
"include": ["src/**/*"],
|
"include": ["src/**/*"],
|
||||||
"exclude": ["node_modules", "dist"]
|
"exclude": ["node_modules", "dist"]
|
||||||
|
|||||||
Reference in New Issue
Block a user