Make every action real keyboard/mouse via xdotool, not just the visible browsing: address-bar navigation (Ctrl+L + char-by-char typing), the YouTube settings gear -> 화질 -> 1080p menu (real clicks, verified hd1080), the autoplay toggle, the play button, and fullscreen via the real 'f' key (F11 isn't honored by this WM; 'f' yields true 1080p fullscreen without pausing). CDP/DOM API is now used only to read state for verification.
1.8 KiB
1.8 KiB
stream-test
Operational scripts for manually verifying the selfbot Go-Live broadcast with a real browsing session captured from the X display.
Files
stream-hold.ts- joins the voice channel and keeps the Go-Live stream up until stopped. All params from.env(DISCORD_SELFBOT_TOKEN,DISCORD_GUILD_ID,DISCORD_VOICE_CHANNEL_ID,VNC_RESOLUTION,VNC_FRAMERATE,VNC_BITRATE_KBPS,STREAM_HW,VNC_DISPLAY).human.mjs- human-like interaction helpers. Real mouse/keyboard viaxdotool(so the cursor is visible in the stream); Playwright only locates elements. Every action is real input: address-bar navigation (Ctrl+L + typing), search typing, clicking the video / settings menu / autoplay toggle / play button, fullscreen via thefkey, scrolling, and entering links. The CDP/DOM API is used only to read state for verification, and as a rare click fallback when an element has no on-screen box.scenario.mjs- the browse scenario (YouTube -> IU live -> 1080p -> fullscreen -> Naver -> 나무위키), driven with the human helpers. Connects to a Chrome already running with--remote-debugging-port(CDP_PORT, default 9222) on the streamed display.
Run
# keep the broadcast up (separate process / service)
bun bot/scripts/stream-test/stream-hold.ts
# Chrome on the streamed display with remote debugging, then:
node bot/scripts/stream-test/scenario.mjs
A/B framerate/resolution
Lower settings to compare what Discord actually delivers to viewers, e.g.:
VNC_RESOLUTION=1280x720 VNC_FRAMERATE=30 bun bot/scripts/stream-test/stream-hold.ts
Notes
- Selfbot streaming violates Discord ToS; use a burner account.
- Requires
xdotool, an X display, and a systemffmpegwithx11grab/nvenc. - Prereqs (
playwright, system Chrome) are not bot dependencies; install separately where you run the scenario.