OBSBot covers 24/7 stream operations with playlists, OBS control, Twitch and Kick chat integration, streaming on other platforms without chat integration, Discord and web frontend control, local and exported YouTube videos, and recovery. Giveaway-System handles giveaways, community prizes, StreamSeries, claims, and the related Discord workflows. The features stay separated because these are two standalone parts of the product.
The OBSBot works with a fixed root video directory, automatically builds rotating playlists from it, feeds the content into OBS, and keeps Twitch/Kick chat integration, streaming on other platforms without chat integration, token status, Discord control, the web frontend, and recovery together in a reliable 24/7 setup.
Optionally, OBSBot can bring your own or expressly authorized public YouTube videos into local playlist operations via Google Data Portability. The intended rights and privacy path is described in the OBSBot YouTube workflow.
The giveaway system covers the full giveaway flow: from prize approval in Discord through registration via Twitch direct message with !ticket to the configured bot account to automated drawings, claims, reminders, StreamSeries bonuses, and fair winning logic.
OBSBot and the giveaway system are technically separate applications. Which sections are visible and unlocked for you depends on your plan. Choose the section that interests you.
StreamWizard connects OBS, Twitch/Kick, additional platform paths without chat integration, Discord, and the web frontend into a setup that not only streams, but also builds playlists automatically, monitors itself, and can be controlled remotely.
The bot connects to OBS Studio via WebSocket (v5). It controls the video source, switches scenes, and starts playback — all programmatically.
OAuth2 token lifecycle with automatic refresh. On Twitch and Kick, chat integrations run through the platform connection; on other platforms the bot continues through OBS without chat integration.
Connected via JDA (Java Discord API). The mod channel and the web frontend are the command centers — commands, logs, status messages, and remote control converge there.
This is where the difference is made between a real continuous stream and a dull endless loop.
At startup, the bot scans the configured root video directory with its subfolders for MP4 files and builds playlist.json from it. Each video is recorded with path, name, and duration. Optionally, exported YouTube videos from the intended import path are added.
Each video is marked as played. Once all are done, the playlist is rebuilt with random order so repetition is less predictable.
So viewers and Twitch category listings immediately show what is currently running, the bot builds the stream title dynamically from title prefix, file or folder name, and title suffix.
| Part | Source | Example |
|---|---|---|
| Title prefix | Configuration field | 🎬 Now playing: |
| Video name | File or folder name (without .mp4) | Best of Stream #42 |
| Title suffix | Configuration field | | 24/7 Rerun |
The token flow is designed so your 24/7 Twitch bot does not stop because of expired authentication.
Once the bot reports in the private Discord mod channel that the token is missing or expired, open the OAuth2 authorization code flow link. A state parameter protects against CSRF.
Use !settwitchcode <code><code></code> in the private Discord mod channel. The bot exchanges it for access and refresh tokens.
The token is checked every 180 seconds. If needed, the bot refreshes it automatically.
Use !tokenstatus to check current state at any time. Problems are reported in the Discord log channel.
These mechanisms are what turn simple OBS automation into an OBSBot that detects problems and does not stop at the first failure.
On unexpected errors, Recover() is triggered: stop bot, reset playlist, restart bot, reconnect Discord.
OBS is checked via TCP before each video. On timeout, exponential backoff applies.
A separate monitor tracks internet connectivity and triggers Twitch reconnect on recovery.
These commands belong directly to 24/7 operation: start the bot, rebuild the playlist, apply updates, maintain tokens, check status, and intervene in running content. The same control model is additionally complemented by the web frontend.
| Command | Function | Details |
|---|---|---|
!bothelp | Show commands | Lists available OBSBot commands with a short description. |
!log | Send bot log | Sends the current log content to the log channel. |
!sendfile <name> | Send file | Transfers a file from the bot directory for analysis. |
!settwitchcode <code> | Set OAuth code | Exchanges the OAuth code for access and refresh tokens. |
!tokenstatus | Check token status | Shows validity, expiry date, and last check. |
!refresh | Force refresh | Immediately starts a manual token refresh. |
!update | Reload configuration | Reloads changes from bot configuration without reinstalling. |
!restart | Restart bot | Restarts OBSBot and the OBS connection. |
| Command | Function | Details |
|---|---|---|
!voteskip | Start skip voting | Starts a vote to skip the current video. |
!vote | Participate in voting | Once the defined threshold is reached, the current video is skipped. |
!mark <grund> | Mark video | Marks problematic content for later review by mods. |
Here you can see the technical baseline for running the OBSBot on a PC, server, or headless setup.
The OBSBot can run either with a UI for initial setup or headless for continuous server operation.
The Java Swing UI shows all fields, log area, and control buttons. Ideal for first setup.
Via --headless flag or automatically on systems without display. Perfect for servers.
If you are planning continuous 24/7 operation, these are the relevant areas for setup, stability, and ongoing control.
Use Discord for OBSBot setup Open OBSBot landing page View download flowFor giveaways, community prizes, and fair drawings with less manual work, but with clear technical states for registration, drawing, claims, and moderation.
Registration runs via Twitch direct message with !ticket to the configured bot account. The bot cleanly transfers users into participant data and keeps available prizes synchronized in parallel.
Pity rates, cooldowns, dedup, and stored participant data feed directly into the draw. In addition, a live check verifies who is actually active in chat.
Submission, approval, status changes, winner assignment, and operational interventions are bundled through Discord instead of getting lost between individual messages and spreadsheets.
The bot stores open wins, sets claim windows, sends automatic reminders, and returns prizes that are not claimed in time back into the available pool.
The second bot in your license: for everything around drawings, community prizes, StreamSeries, and cleanly managed claim flows.
The giveaway system handles participation through Twitch direct messages with !ticket to the configured bot account, stores participants persistently, starts drawings at fixed intervals, and cleanly separates available, drawn, and claimed prizes.
Prizes move through Discord submission, approval, and winner assignment. After the drawing, the bot manages claim windows, reminders, fallbacks, and status until final completion.
Adaptive pity rates and StreamSeries detection with dedup, cooldown, and bonus stars ensure that recurring community activity feeds directly and transparently into the winning logic without allowing simple duplicate advantages.
Status, approvals, prize sources, live prize lists, and operational interventions remain visible in Discord while the giveaway system handles the actual giveaway and community prize flow and continuously updates prize states.
Not a single random button, but a combination of Twitch inbound, draw logic, Discord status, and scheduled resets.
Tickets arrive via whisper. But for the actual draw, it is not only the entry that counts, but also whether the user is still detected as an active chatter during the live check.
Participant data, open wins, and draw parameters stay stored. This lets the flow survive restarts, claim windows, and longer streams without moderators having to maintain it manually.
Discord forms the operational layer: prizes are submitted, approved, assigned to a winner, and tracked by status while live lists and team interventions remain available.
Draws run on a schedule. Participant and pity data are maintained through planned resets, and unclaimed prizes move automatically back into the available inventory.
From submitted prize to confirmed claim, the flow is split into controllable individual steps.
Community members or sponsors submit prizes in Discord. Description, limits, prize source, and proof images when needed are checked before a prize is allowed into the available pool at all.
Viewers register via Twitch direct message with !ticket to the configured bot account. The bot stores participation persistently and prevents the flow from being based only on loose chat messages.
At configurable intervals, the bot draws automatically. Pity logic, StreamSeries bonuses, dedup, and cooldowns feed directly into the win logic; in addition, only viewers who still appear as active chatters during the live check remain eligible.
Winners claim via !claim in public chat. Open wins stay stored, reminders run automatically, and prizes that are not confirmed return to available after expiry.
The core areas that make the difference between a simple draw and a robust workflow in daily giveaway operation.
Drawings do not run ad hoc, but at fixed intervals. When needed, the team can additionally trigger a manual run without giving up the regular rhythm.
Min/max boundaries for pity rates, stepwise adjustments, and a real activity check make fairness more than just a promise.
Recurring activity feeds into the logic through bonus stars while dedup and cooldowns limit duplicate advantages and keep streaks clean.
Physical prizes can be submitted with proof images so moderators do not have to approve blindly and prize quality remains traceable.
Available, drawn, claimed, and returned prizes remain visible to the team instead of disappearing from view during live operation.
Open wins are not just stored, but actively tracked, reminded, and released again in a controlled way if a claim does not arrive.
This section focuses only on giveaway and prize logic: entry, status, claims, and handing off prizes in Discord.
| Command | Function | Details |
|---|---|---|
!ticket | Register via direct message | Is sent via Twitch direct message to the configured bot account, stores the entry persistently, and is intentionally not a public chat command. |
!claim | Claim prize in chat | Is used in public chat after a win so the bot can clearly assign and close open wins for the correct user. |
!sternenschleuder | Get giveaway status | Shows the current state of the raffle launcher and available prizes. |
| Command | Function | Details |
|---|---|---|
!rafflenow | Trigger immediate draw | Allows the team to trigger a draw immediately outside the regular interval, for example during events or for controlled flow testing. |
Prizes are submitted in a structured way, reviewed, and only made available for drawings after approval.
The bot keeps winners, claim windows, reminders, and returned prizes aligned so prizes do not get lost in day-to-day operations.
Mods can always see which prizes are available, drawn, claimed, or returned and can intervene in the flow.
If you care about drawings, StreamSeries, claims, and prize management, this is the relevant part of StreamWizard for you.
Use Discord for giveaway system setup Open FAQHere you can see the technical baseline for running the OBSBot on a PC, server, or headless setup.
The OBSBot can run either with a UI for initial setup or headless for continuous server operation.
The Java Swing UI shows all fields, log area, and control buttons. Ideal for first setup.
Via --headless flag or automatically on systems without display. Perfect for servers.
OBSBot for 24/7 stream operations. Giveaway-System for giveaways, StreamSeries, and community prizes. Which areas are visible and unlocked depends on your plan.