-
-
Notifications
You must be signed in to change notification settings - Fork 0
Deployment Guide
Complete step-by-step guide to deploy the Giveaway Bot from zero to your first giveaway.
- Operating System: Windows 10 or 11
- Streamer.bot: v0.2.3 or later (Download Here)
- Streaming Platform: Connected account (Twitch, YouTube, or Kick)
- OBS Studio: For on-stream overlays
- Wheel of Names Account: For visual wheel spins
- Stream Deck: For button-based control
Follow these 5 steps to run your first giveaway:
- Navigate to the latest release
- Download
GiveawayBot.cs - Save to a known location (e.g., Downloads folder)
- Open Streamer.bot
- Go to the Actions tab
- Right-click the sub-actions list → Add → Code → Execute C# Code
- Paste the contents of
GiveawayBot.csinto the code editor - Click Find Refs → Compile
- Click OK
✅ Success: You should see "Giveaway Bot" in your sub-actions list
The bot needs to know when to respond to commands. Set up these 4 essential triggers:
- In Streamer.bot, go to the Triggers tab
- Click Add → Chat Command
- Set command to:
!enter - Link to action:
Giveaway Bot - Enter - Check Enabled
- Click Add → Chat Command
- Set command to:
!start - Link to action:
Giveaway Bot - Open - Check Enabled
- Click Add → Chat Command
- Set command to:
!draw - Link to action:
Giveaway Bot - Winner - Check Enabled
- Click Add → Chat Command
- Set command to:
!end - Link to action:
Giveaway Bot - Close - Check Enabled
Verify everything is working:
-
In your streaming platform chat, type:
!giveaway system test
-
Expected Response:
========================================= GIVEAWAY BOT - SYSTEM TEST Version: 1.5.11 ========================================= ✓ Config loaded successfully ✓ 1 profile found: Main ✓ File system access OK ✓ State files accessible ✓ Log files writable ✓ All checks passed! =========================================
⚠️ If errors appear: See Troubleshooting section below
!startBot Response: "🎉 Giveaway 'Main' is now OPEN! Type !enter to join!"
!enterBot Response: "✅ {YourName}, you're entered! (1 ticket)"
!drawBot Response: "🎊 WINNER: {YourName}! Congratulations!"
!endBot Response: "❌ Giveaway 'Main' is now CLOSED."
🎉 Congratulations! You've successfully run your first giveaway!
- Visit https://streamer.bot
- Click Download
- Run the installer
- Follow the installation wizard
For Twitch:
- Open Streamer.bot
- Go to Platforms → Twitch
- Click Sign In
- Authorize in your browser
- ✅ Connection indicator should turn green
For YouTube:
- Go to Platforms → YouTube
- Click Sign In
- Authorize with your Google account
- ✅ Connection indicator should turn green
For Kick:
- Go to Platforms → Kick
- Enter your Kick username
- Click Connect
- Open Streamer.bot
- Click the Actions tab (left sidebar)
- Right-click in the empty actions area
- Select Add from context menu, and set your Name/Group/Queue names
- Everything else can be left at the defaults. Click Ok
- Right-click in the empty sub-actions list
- Select Code from context menu
- Select Execute C# Code
- Paste the contents of
GiveawayBot.csinto the code editor - Click Find Refs → Compile
- Click OK
- Confirmation: "Code compiled successfully"
Triggers tell Streamer.bot when to run the giveaway bot. Here's how to set up each type:
!enter Trigger:
- Triggers tab right-click empty space → Add
- Select Core → Commands → Command Triggered
-
Command:
!enter - Click OK
!giveaway Trigger (Management):
- Triggers tab right-click empty space → Add
- Select Core → Commands → Command Triggered
-
Command:
!giveaway - Click OK
Repeat for !start, !end, !draw using the appropriate sub-actions.
If you have a Stream Deck:
- Triggers tab → Add
- Select Stream Deck → Button Press
- Button: Press the physical button you want to use
- Label: Name it (e.g., "Draw Winner")
For keyboard shortcuts:
- Triggers tab → Add
- Select Hotkey
- Key: Press your desired key combo (e.g., F5)
- Click OK
The bot uses a JSON configuration file: giveaway_config.json
!giveaway config genThis creates a config file with sensible defaults and inline documentation.
If you want to start simple, create giveaway_config.json manually:
{
"Profiles": {
"Main": {
"Triggers": {
"command:!enter": "Enter",
"command:!draw": "Winner",
"command:!start": "Open",
"command:!end": "Close"
},
"MaxEntriesPerMinute": 100,
"SubLuckMultiplier": 1,
"ExposeVariables": false
}
},
"Globals": {
"RunMode": "Mirror",
"LogLevel": "INFO"
}
}File Location: Place in the same directory as Streamer.bot's executable.
{
"Profiles": {
"Main": {
"Triggers": {
"command:!enter": "Enter",
"command:!join": "Enter",
"command:!draw": "Winner",
"command:!start": "Open",
"command:!end": "Close"
},
"MaxEntriesPerMinute": 60,
"SubLuckMultiplier": 2,
"MinAccountAgeDays": 7,
"EnableEntropyCheck": true,
"ExposeVariables": true,
"DumpEntriesOnEnd": true,
"ToastNotifications": {
"WinnerSelected": true,
"GiveawayOpened": true,
"GiveawayClosed": true
}
}
},
"Globals": {
"RunMode": "Mirror",
"StatePersistenceMode": "Both",
"LogLevel": "INFO",
"ImportGlobals": true
}
}Key Differences:
- Anti-bot measures enabled (account age, entropy check)
- Multiple entry commands (!enter and !join)
- Sub luck gives subscribers 2x tickets
- Variable exposure for OBS integration
- Toast notifications for important events
Display giveaway info on your stream using Streamer.bot global variables.
-
In OBS, add a Text (GDI+) source
-
Name it: "Giveaway Entry Count"
-
In the Text field, enter:
Entries: %Giveaway Main Entry Count% -
Style the text (font, color, size)
-
Position on your scene
-
✅ The count will update automatically
-
Add another Text (GDI+) source
-
Name it: "Giveaway Status"
-
In the Text field, enter:
Giveaway: %Giveaway Main Is Active% -
(Optional) Use Color Alteration filter:
- Green when "true"
- Red when "false"
Show/hide a scene element based on giveaway status:
- Create a Group or Scene for giveaway elements
- Right-click → Filters
- Add Show/Hide filter
-
Variable:
Giveaway Main Is Active -
Condition: Show when
true, Hide whenfalse
⚠️ Important: SetExposeVariables: truein your profile config (or useRunMode: Mirror) for OBS integration to work
Add visual wheel spins for winner selection.
- Visit https://wheelofnames.com
- Create an account (free)
- Go to Settings → API
- Copy your API Key
{
"Profiles": {
"Main": {
"EnableWheel": true,
"WheelSettings": {
"Title": "🎉 GIVEAWAY WINNER 🎉",
"SpinTime": 10,
"DisplayWinnerDuration": 5
}
}
},
"Globals": {
"WheelOfNamesApiKey": "paste-your-api-key-here"
}
}- Start a giveaway:
!start - Add some entries:
!enter - Draw a winner:
!draw - ✅ Browser should open with spinning wheel
🔐 Security Note: On first launch, the bot will automatically encrypt your API key for security
Symptom: Bot doesn't respond to any commands
Solution:
- Check that "Giveaway Bot" appears in Actions list
- If missing, re-import
GiveawayBot.cs - Verify triggers are linked to the correct action
Symptom: Bot responds with "No trigger configured for..."
Solution:
- Run
!giveaway config checkto see trigger status - Verify
giveaway_config.jsonhas theTriggerssection - Ensure trigger format is correct:
"command:!enter": "Enter"
Example Fix:
{
"Profiles": {
"Main": {
"Triggers": {
"command:!enter": "Enter"
}
}
}
}Symptom: Entry count resets to 0 when Streamer.bot restarts
Solution: Change RunMode to Mirror for persistent state
{
"Globals": {
"RunMode": "Mirror",
"StatePersistenceMode": "Both"
}
}Explanation of Modes:
- FileSystem: Uses local JSON file only (lost on failure)
- GlobalVar: Uses Streamer.bot memory only (lost on restart)
- Mirror: Syncs both file and memory (recommended)
Symptom: Bot doesn't respond to chat commands
Solution:
- Check platform connection (green indicator in Streamer.bot)
- Verify Streamer.bot has permission to read chat
- Test with a simple command like
!testin another action - Check if bot is rate-limited by the platform
Symptom: Errors about file/folder permissions
Solution:
- Run Streamer.bot as Administrator (right-click → Run as administrator)
- Check
giveaway_config.jsonfile permissions - Ensure antivirus isn't blocking file writes
Symptom: "Config validation failed" errors
Solution:
- Run
!giveaway config checkfor detailed error messages - Validate your JSON at jsonlint.com
- Check for common mistakes:
- Missing commas
- Unmatched quotes
- Incorrect property names (case-sensitive!)
Symptom: !draw picks winner but wheel doesn't appear
Solution:
- Verify
EnableWheel: truein profile config - Check API key is set in
Globals.WheelOfNamesApiKey - Test API connectivity:
!giveaway system test - Ensure browser isn't blocking
pop-ups
After completing your first giveaway, explore these features:
-
Configuration: Edit
giveaway_config.jsonto customize entry limits, sub luck, and messages- See USER_GUIDE.md for all available options
-
Multiple Profiles: Create separate giveaways for different purposes (Daily, Weekly, Sub-Only)
- Learn more in ADVANCED.md
-
OBS Integration: Display entry counts and giveaway status on stream
- Setup guide in ADVANCED.md
-
Wheel of Names: Enable visual wheel spins for winner selection
- Configuration in ADVANCED.md
-
Anti-Bot Protection: Configure account age, entropy checks, and rate limiting
- Details in ADVANCED.md
-
Custom Triggers: Set up StreamDeck buttons, hotkeys, or regex patterns
- Examples in ADVANCED.md
-
Toast Notifications: Get desktop alerts for giveaway events
- Configuration in USER_GUIDE.md
- API Reference: Technical documentation for developers (API Reference)
- FAQ: Common questions and troubleshooting (FAQ)
- GitHub Issues: Report bugs or request features at the repository
If you encounter issues not covered in this guide:
- Check the FAQ for common questions
- Review the User Guide for detailed explanations
- Open an issue on GitHub with:
- Your
!giveaway system testoutput - Relevant log files (
logs/folder) - Steps to reproduce the issue
- Your
Happy streaming! 🎉