Compare commits
2
Commits
77c8454bb2
...
f1da40691f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1da40691f | ||
|
|
374fd5a9c2 |
No files matched your search
@@ -1,6 +1,6 @@
|
|||||||
# Spec: Receive Others' Screen-Share/Camera Video Under DAVE — Build a DAVE-capable Stream-Watch Connection
|
# Spec: Receive Others' Screen-Share/Camera Video Under DAVE — Build a DAVE-capable Stream-Watch Connection
|
||||||
|
|
||||||
Status: PLANNED (~multi-session)
|
Status: **P1–P3 DONE (implemented + deployed); P4 (live verify) BLOCKED on a real streamer**
|
||||||
Date: 2026-08-31
|
Date: 2026-08-31
|
||||||
Author: Hermes
|
Author: Hermes
|
||||||
Related: `.hermes/plans/2026-08-31_video-receive-eager-selfbot-connection-spec.md` (superseded by this)
|
Related: `.hermes/plans/2026-08-31_video-receive-eager-selfbot-connection-spec.md` (superseded by this)
|
||||||
|
|||||||
@@ -30,7 +30,11 @@ import {
|
|||||||
type WriteStream,
|
type WriteStream,
|
||||||
} from "node:fs";
|
} from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { Networking, type NetworkingState } from "@discordjs/voice";
|
import {
|
||||||
|
getVoiceConnection,
|
||||||
|
Networking,
|
||||||
|
type NetworkingState,
|
||||||
|
} from "@discordjs/voice";
|
||||||
import type Davey from "@snazzah/davey";
|
import type Davey from "@snazzah/davey";
|
||||||
import { MediaType } from "@snazzah/davey";
|
import { MediaType } from "@snazzah/davey";
|
||||||
import type { Client, VoiceChannel } from "discord.js-selfbot-v13";
|
import type { Client, VoiceChannel } from "discord.js-selfbot-v13";
|
||||||
@@ -193,14 +197,27 @@ function connectWatch(
|
|||||||
const botId = _client?.user?.id;
|
const botId = _client?.user?.id;
|
||||||
if (!botId) return;
|
if (!botId) return;
|
||||||
|
|
||||||
// The bot's ACTIVE voice-session id (from the selfbot client's voice manager —
|
// The bot's ACTIVE voice-session id, from the guild @discordjs/voice
|
||||||
// the same session the guild @discordjs/voice connection rides).
|
// connection (the watch RTC identify must carry the SAME session the bot is
|
||||||
const voiceManager = (
|
// joined in with). The gateway's audio connection is the voice session; the
|
||||||
_client as unknown as {
|
// selfbot client's voice manager is NOT established anymore.
|
||||||
voice?: { connection?: { authentication?: { sessionId?: string } } };
|
const guildConn = getVoiceConnection(guildId);
|
||||||
}
|
const sessionId =
|
||||||
).voice;
|
(
|
||||||
const sessionId = voiceManager?.connection?.authentication?.sessionId;
|
guildConn as unknown as {
|
||||||
|
state?: {
|
||||||
|
networking?: {
|
||||||
|
state?: { connectionOptions?: { sessionId?: string } };
|
||||||
|
};
|
||||||
|
connectionOptions?: { sessionId?: string };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)?.state?.networking?.state?.connectionOptions?.sessionId ??
|
||||||
|
(
|
||||||
|
guildConn as unknown as {
|
||||||
|
state?: { connectionOptions?: { sessionId?: string } };
|
||||||
|
}
|
||||||
|
)?.state?.connectionOptions?.sessionId;
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
{ userId: uid, endpoint, serverId, hasSession: !!sessionId },
|
{ userId: uid, endpoint, serverId, hasSession: !!sessionId },
|
||||||
|
|||||||
Reference in new issue
Block a user