Update Notes

-recoded GUI chat
-GUI efficiency improvements
-fixed bug with google spreadsheets linking to wrong sheets
-fixed removing selected queued viewers
-fixed Mixer interactive cooldowns
-fixed Mixer initial user list api pull when connecting
-fixed intermittant freezing issue when performing viewer currency timer interval
-added $userid to return the viewers unique ID
-fixed bug using quotes in mixer title
-fixed bug with chat messages during costreams causing bot to respond to all channels messages/commands
-fixed $ban() optional message attribute
-chat gui will now highlight messages where streamer is tagged
-caps filter will now ignore mixer emotes

-streamer account will now connect to twitch chat
-whispers from bot to twitch will be sent from streamer account
-fixed bug with twitch auto-connect
-$len(text) will return the character length of the text
-fixed posssible bug preventing Mixer from connecting properly if login menu is closed too quickly
-command cooldowns may now be set to seconds or minutes
-slightly adjusted command editor gui
-added new option in settings tab under chat to choose whether to send Twitch whispers from streamer account
-added optional 2nd attribute to $ban for custom confirmation message. Example: $ban($target, $target was banned!)
-$ban should now work on Twitch
-game and title change confirmation message whisper/public output will now match command setting when changed via variable
-fixed so that gfx media file extensions are no longer case sensitive
-added option to settings tab for customizing default command prefix
-fixed bug saving custom song lists
-added clear buttons to alerts on dashboard
-added $viewersall variable to provide total viewer count including Twitch and Mixer
-added $viewers variable to provide viewer count
-fixed bug with "remove selected" button for queue
-$inchat(target) will return 1 if target is in the chat or 0 if not
-can now sort command list by count
-added command groups
-fixed bug with "!command show" when msg contains $writefile
-fixed bug deleting interactive controls
-can now drag and drop to reorder queue list
-fixed bug causing multiple google spreadsheets
-changed "Action" to "Response" in interactive editor
-fixed bug preventing "!command typeout" from being recognized
-fixed error caused by missing mp3 file on custom music list
-added initial Spotify support

-fixed another bug with google authentication refresh
-adjusted the way $command works
-can now use $user(mixer) or $user(twitch) in case a viewer has linked accounts and you would like to refer to that specific username
-fixed bug with $command in timers
-$if != and = are no longer case sensitive

-added optional confirmation message to removepoints variable: $removepoints(name,#,confirmation message)
-added authentication check to make sure mixer/twitch accounts were correct
-fixed !wrongsong bug
-fixed bug causing sfx disabled message to spam
-now requires both bot and streamer authentication for mixer and twitch to connect
-fixed bugs with Google Spreadsheets initialization and sheet creation
-fixed bug with $command defaulting to Mixer when used in Twitch
-added 3 new variables to provide links to google spreadsheets: $gsscmd, $gssquote, $gsssongreq
-can now manually enter giveaway timer and active time (you're welcome, Reaper)

-fixed bug when saving viewers with "gains currency" disabled causing hours to clear

-fixed error removing twitch hosts when list is empty
-fixed possible error entering non numerical characters in rank requirement
-removed channel option from mixer login menu
-added privacy policy link on web tab
-fixed error when pressing stop in music player
-updated/fixed google spreadsheet authentication
-increased rank up message max character length
-changed music player to increase speed/efficiency and remove extra library dependencies no longer needed
-fixed cefsharp errors often caused by missing dependencies or mismatched library files
-recoded some authentication methods for added security
-can now create timers from chat with !timer add name c/d message. (requires editor permission) example: !timer add test 30m This is a test timer
-editors can view list of timers with !timers
-editors can now view an existing timer details with !timer show timername
-editors can now delete an existing timer with !timer delete timername
-can now cancel a commands cooldowns with $cancelcd and/or $cancelucd
-fixed bug with $logfile
-mp3 playback should no longer affect windows volume
-* will now act as a starting or ending wildcard character for commands with "find in all text" enabled

-fixed bug with Twitch mod permission
-fixed command "search all text" option so that characters such as ! won't break it (note: still must be full word only)
-recoded and improved mixer bot/streamer authentication, no longer requires copy and paste from external browser window
-removed "Top #:" from beginning of top hours and points strings for better customization
-added optional target for $hours. Example: $hours(Scorpio)

-fixed Twitch bugs

-fixed bug with chat relay from twitch to mixer
-updated integrated browser (used for musicplayer)

-fixed bug with $readapi

-fixed bug with new $uptime
-fixed >= and <= checks with $if

-fixed twitch disconnect button
-combined viewer list will now clear properly when mixer or twitch are disconnected
-added fix for some new crash errors
-added connection status for StreamLabs on dashboard

-fixed spin minigame so that points are awarded before win message is sent
-added custom rank up message
-fixed bug with $if when containing other variables that use {} brackets
-added $num and $num1-9 to act as numerical alternative to $target
-fixed $randnum bug causing multiple instances in the same output to choose the same number
-added total entries count to top of giveaway list
-added variables $ismod, $issub, $isreg, $isfollower which output 1 if true and 0 if false. Optional (name) variable will check a specific viewer otherwise user of command will be checked. Example $ismod(viewername)
-added support for multiple $mygame in the same command
-added support for StreamLabs
-moved Music and SFX as subtabs of Audio tab
-fixed bug removing viewers from queue on GUI
-added option to allow rank up message when not active in chat
-added Twitch sub alerts
-fixed bug causing Twitch to attempt autoreconnect when disconnect is clicked
-added channel check for join/leave messages as an additional co-stream fix
-fixed bugs with embedded variables using () brackets
-added gfx support for png and jpeg files
-fixed bug preventing mixer manual resub alert from working if auto alert text is blank
-added streamer authentication for Twitch
-fixed bug causing $command to default to Mixer
-fixed $readapi embedded variable check issue
-caster will now be able to use commands with sub permission requirement
-added verification information as post variables through $readapi for optional checks
-fixed bug with $command() when no delay is set
-added support for multiple $command variables in a single output
-added optional target for $rank. Example: $rank(Scorpio)
-fixed mixer $uptime

-both {} and () will now work for $setgame and $settitle
-fix for $setgame and $settitle if | is used in the text with no 2nd attribute

-changed $setgame and $settitle to use {} brackets instead of ()
-added optional 2nd attribute to $setgame and $settitle to select mixer or twitch, seperated by | character. Example: $settitle{title|mixer}
-added => and <= to if statements
-can no longer enter giveaways after winner is chosen
-fixed $points(name)
-fixed bug with $points when compared in $if statements
-changed the way spin minigame messages are saved
-added permission option for filtered words
-filtered words will now ignore emotes on Mixer
-fixed nested $if{} statements
-removed interactive permission
-added optional 2nd attribute to $commands for a delay in seconds. Example: $command(!cmd,5)

-removed message when $ban is used so that it can be optional
-$randomlist will now ignore lines beginning with //
-when using $writefile, $nl will split the text into multiple lines. Example: Line1 $nl Line2
-added $setcount() to change a custom commands $count value
-added variable check to timer messages
-cleaned up database handling to fix possible memory leaks
-fixed bug sometimes causing $toppoints to break the bot requiring a restart to fix
-can now use !veto and !skip if custom list is playing with song requests disabled
-added support for Beam Interactive 2.0 (note: this feature is considered alpha and requires further testing
-new permission "interactive" which causes command to only function through beam interactive control
-!sfx will whisper available sfx commands
-added optional fail msg to $setrank. Example: $setrank(name,rank,invalid rank!)
-new sfx system
-converted Beam to Mixer
-!bot will only display public message once per hour, otherwise while on cooldown it will whisper
-will now only react to Mixer messages from own channel (in case of co-streaming)
-can now add editor access to viewers through chat with !addeditor or !seteditor (can only be set by caster)
-$randuser will now only select active users by default unless $randuser(false) is added
-fixed error caused by entering invalid rank requirement
-added option to disable SFX individually
-can now set a commands count with !command setcount # !cmd
-fixed spin minigame message reset bug
-$points and $points2 will now always show the command users points
-can now display a targets points with $points(name) and $points2(name)
-changed time field to no wrap in bot chat window
-added button in sfx tab to clear sfx queue

-fixed variable security issue

-added optional max point limit per viewer
-added $addpoints2, $addpointsall2, $removepoints2, $removepointsall2, $takepoints2
-added check to prevent duplicate follow alerts
-$randomlist will now accept filename with or without .txt
-added $settitle() and $setgame() variables

-can now set command output send type through chat with !command typeout same/public/whisper !cmd
-fixed ssl issue connecting to Beam

-fixed bug saving timer as a command now causing a crash error

-tts will no longer read message purged by caps/link check
-fixed deleting timers with quotes in name
-$randvalue and $randomuservalue should now work properly in $if{}
-fixed bug preventing 8ball game from working
-can now set command output to public, whisper, or the same as the input type
-fixed bug causing streamer authentication to become stuck in a loop if refresh token is invalid

-fixed $target when within $if{}
-added not equal for $if{}. Can be either != or <>
-fixed bug preventing sent messages from completing if $gfx fails
-added !steal command prefab

-fixed another bug with $if{} when containing other variables
-fixed bug with Beam constellation error handling

-fixed some bugs with $if{}
-fixed bug with !streaminfo command preventing it from working
-added game commands to !streaminfo

-added optional command for on-stream timer reaching zero
-fixed bug with $setrank preventing it from working
-moved game processing into its own thread
-added some additional error checking for google spreadsheets
-fixed $user when used in gfx message called with $gfx()
-added $takepoints variable. Usage: $takepoints(taker,giver,#points,success msg,fail msg)
-added $fail variable used to give a command a chance to fail and produce an alternate output. Usage: $fail(%,fail msg)
-added $if{} variable to allow for situation dependant outputs from a command. Example usages: $if{$user=viewername|Do this|Do this instead}, $if{$randnum(1,100)>50|Do this|Do this instead}, $if{$randnum(1,100)<50|Do this|Do this instead}
-added warning message in gui chat when starting to ignore repeat messages per viewer
-will now attempt to reload the same custom song list when bot loads
-fixed bug saving imported filtered words

-added $setrank(name,rank) for manually setting custom ranks through commands
-added custom warning message and timeout options for filtered words
-twitch messages are now checked for filtered words
-added some additional error checking
-$reqpoints will now convert variables
-now supports different currencies for Streamjar donations
-added ban/purge buttons to gui under online list *requires streamer authentication for beam
-added variable $ban(name) *requires streamer authentication for beam
-fixed bug preventing overwriting selected counter

-possible fix for intermittant Beam alerts
-Beam follow and host alerts now convert variables
-new variable $tts() will read out text within brackets if TTS is enabled
-can now cancel giveaways through chat by typing !giveaway cancel
-quotes no longer allowed in Rank names
-fixed some database managing bugs with Ranks
-duplicate message check will now ignore the bots own messages
-new variable $delcommandmsg will delete the initating command message (Beam only)
-fixed check for manual resub alert
-skipped repeat messages will still be checked for links/caps/filtered-words

-possible fix for heists, roulette, and russian roulette sometimes not paying out winnings
-added option to ignore repeat messages after a certain count per viewer. Can also choose to delete any further messages from chat (currently only supported on Beam)

-one more bug fix for Google Spreadsheets

-changed default giveaway claim timer from 30 to 60 seconds
-added viewer list actions for deleting all twitch or beam viewers
-added import/export for filtered words list
-changing Beam channel title will now auto shorten to maximum length allowed by Beam
-manual TTS message no longer requires twitch option enabled
-default gfx loop changed from 10 to 1
-fixed some bugs with Google Spreadsheets

-mouse wheel no longer scrolls combolists
-rankup check is no longer off by 1
-added $hostee which will display current hosted channel name
-readded gfx stream window width/height options in gfx tab
-fixed bug with gfx stream window resizing
-beam viewer list will now update on reconnection

-fixed giveaway follow check error
-giveaway reroll will no longer be able to select the same winner twice in a row
-corrected command cooldown editing through chat referred to as minutes rather than seconds

-added manual TTS message
-added TTS viewer type filter
-can no longer add duplicate names to hosting lists
-added option in chat section of settings tab to show emotes in chat (try turning this off if experiencing performance issues, especially during emote spam)
-fixed bug with giveaway entry permission option
-made some efficiency improvements with chat

-added support for channel:{id}:resubShared alert
-beam resub alert will now check for all variables
-fixed !commands max character check for splitting into multiple messages

-fixed roulette crash error
-should no longer keep rehosting the same person if auto host list only contains a single channel
-added variables $twitch{} and $beam{} which will only output {contents} if command is used in that chat

-added $randomuservalue
-fixed !roulette command bug

-added custom permission for adding/removing currency
-fixed text to speech emote bug
-added option to select out of any installed voices with speech synthesizer
-default voice for text to speech is now an adult female, if available

-can now turn off mod controlled music controls
-corrected and reversed veto/skip so that !veto will instantly skip (default permission moderator) and !skip will vote to skip (default permission regular)
-added token refresh checks on api calls using streamer account to prevent auth failure due to expired token
-dashboard beam game/title should now update correctly when either is changed through chat

-added 10 second timeout for update check
-added $volume
-added Text to Speech (located in Tools tab)
-fixed music player play button bug
-!pause/!play/!stop/!setvolume buttons now work even if song requests are disabled
-increased $command loop from 5 to 10
-added variable conversion to streamjar donation alert
-fixed bug with $randnum when both numbers are the same

-fixed bug updating existing song request database file for new version

-added previously played music list
-fixed possible trackbar error when switching songs
-fixed bug preventing loading saved song request queue when music player is opened
-fixed main GUI menu bar text when selected was white

-improved auto updater
-added version check and auto update process for auto updater itself
-!command clearcooldowns !cmd will clear that specific commands cooldowns
-fixed bug with deleting commands causing permissions and cooldowns to become out of sync

-fixed bug with setting command cooldowns through chat

-will now recognize follower status for viewer immediately when chat alert happens on Beam (for giveaways)
-added check for beam viewer status updates (such as sub and mod)
-added new music/songrequest player
-fixed bugs caused by sorting command list in GUI
-fixed bug deleting commands containing quotes
-edited "!command show" to display the commands cooldowns
-can now edit command cooldowns through chat with "!command cd # !cmd" and "!command ucd # !cmd"
-fixed $uptime when used through GUI chat or timers
-song request will no longer accept youtube video's which are not available in the caster's country
-added option in settings tab to disable whisper of currency use
-added $quote which will display a random quote and $quote(#) which will display quote #
-added Beam audience setting to dashboard
-added !setaudience and !setrating commands (both will accept family, teen, or 18+ and currently only works for Beam)
-added entry permission option for giveaways
-fixed adding/removing/giving currency when using @ in front of target name
-added extra variable check before $readapi is processed
-added mod commands for music: !setvolume, !pause, !play, !stop
-typing total after the song request command will show how many total song requests are in the queue
-added commands for mods to control on-stream timers: !starttimer, !startimer #, !stoptimer, !resettimer, !cleartimer

-fixed bug starting a round of russian roulette with less than required currency
-added Twitch host alert
-fixed bug with commmand user delays
-added default volume bar for custom song list

-fixed default permission settings for song request veto and skip
-added check to prevent auto connect to Beam or Twitch when login has been cleared
-maximum command chain is now 5 to prevent endless loops
-fixed bug with russian roulette winner selection
-fixed bug with russian roulette bet time and max bet values not working
-added $bettime variable to russian roulette start message and changed default message to "$user has started a round of Russian Roulette! You have $bettime, type $command to join! (requires $currentbet $currencyname)"

-now populates name field when loading onstream timer
-added option to only allow timers while stream is live (on Twitch or Beam)
-added !wrongsong to quickly remove the last song request made by the user
-added Russian Roulette minigame
-can now chain commands with $command. Usage: $command(!cmd)
-no longer announces when the lowest rank is assigned
-implimented possible fix for being unable to reconnect to beam constellation
-improved beam server connection by adding multi server attempts and message on failure

-hoster viewer count check now uses bot auth rather than streamer
-fixed bug causing hoster viewer count to show -1+ if API check fails
-auto connect for streamjar will now default to beta if token exists
-added new viewer list action to delete selected viewers
-fixed bug with saving first timer

-added on-stream timer saved presets
-fixed bug with changing name on beam and retaining stats
-fixed bug setting game name/title for twitch from chat

-fixed bug with !streaminfo command
-fixed bug preventing points import from adding viewers not yet on list
-added streamjar beta support
-fixed bug erasing all manual ranks except for the last one created

-fixed clear hours action for viewers list
-ranks list now requires 1 rank to have a 0 value for new viewers
-fixed bug with determining current rank
-fixed bug with spin game only giving smallest payout
-added new easier method of setting gfx position

-fixed bug peventing beam messages containing emotes from appearing in bot chat window
-fixed bug with song requests

-added check to prevent entering giveaways with a negative count
-fixed bug with !commands
-fixed on-stream timer copy to clipboard button
-link and caps check will no longer check standard song requests
-stream window now retains background colour and size properly when bot is restarted
-now converts html tags when sending to Beam or Twitch
-fixed steam search checkbox
-google spreadsheets library files updated to latest version
-application now requires .NET 4.5.2 (was 4.5)
-fixed spin game database bugs and application errors
-fixed bug with rank check for new viewers
-added option to change auto host every # minutes/hours/days/months
-fixed quotes permissions to include others such as sub
-added ability to select multiple viewers on list and perform actions such as reset ranks
-if a command is activated through whisper the output will also be whispered back

-fixed bug with beam streamer oauth
-added sfx option for on-stream timer

-fixed link permit seconds setting load bug
-!songrequest show will now also show what order number each song is currently at
-reenabled chat rate limit to prevent dropped messages on beam
-fixed possible error when clearing twitch login settings and attempting to connect
-added reset button to clear twitch login settings back to default
-one more adjustment to points payout during heist results

-can now set whether viewers gain hours while stream is offline in the settings tab
-!permit now works with @username
-fixed bug with $nextrank and $nextrankreq
-fixed possible error with timers

-now supports multiple $readapi in a single command (max = 3)
-now gives heist winnings after final results have been announced
-ranks now auto sort in ascending order when bot loads
-added connection confirmation message for beam constellation
-now saves settings for giveaway
-fixed mod permission issue
-can no longer veto song requests more than once per viewer
-added check for failure to open default web browser during oauth process with workaround/fixes

-fixed bot chat converting special characters when sending to beam/twitch
-fixed Beam authorization permission error bug when bot is not a mod, which would prevent connection entirely
-fixed $time variable

-fixed twitch relay error

-added timestamp for messages in bot chat with option in settings to turn it off/on
-added Beam check to ensure authentication has correct scopes
-fixed bug with twitch auto reconnect

-added commas to target points and top lists
-added $timeout(name,#) variable
-added new command editing argument: !command resetcount
-added new command editing argument: !command type public/whisper/both
-changed Beam host alert viewer count to alternate method of obtaining the count
-added on stream timer in tools tab
-fixed gfx $hostviewers variable for Beam hosts
-fixed timeouts and purges for Beam (requires reauthenticating bot user
-improved start up process when using Google spreadsheets
-fixed !permit timer

-fixed mistake in settings as link permit is in seconds and not minutes
-increased link permit max time to 120 seconds
-added some error logging to new chat screen
-fixed bug with customized !steam command not working

-fixed beam whisper command bug
-can now customize !steam command and disable it through settings tab
-fixed caps custom warning msg save bug
-fixed anti-hostspam bug causing it to stop working if bot is running for more than 6 hours
-added !veto and !skip settings to song requests
-renamed counters tab as tools which counters are now located under
-fixed spelling errors in giveaway timer warnings
-added viewer queue system located in tools tab
-can now selected whether steam searches output to local chat only or both chats
-added $botname variable
-added option in settings tab to display points with commas

-added html character check to bot GUI outgoing messages
-fixed a few settings which were not loading correctly when bot started

-fixed minor bug with !streaminfo command
-added html character check to messages for GUI chat to prevent code injections

-fixed possible crash error if non-numerical characters are in any point payout fields
-fixed "everyone" permission bug

-fixed bug with giveaway follower check on Beam

-fixed host logging spam issue
-fixed caster permission requirement
-fixed giveaway follower requirement

-temporarily disabled twitch emotes (will be improved in next updates)
-added option to turn off primary currency/points
-fixed link permit timer setting
-added gfx reload button to refresh list of media files on gfx tab

-improved beam game info update failure handling
-fixed !commands option loading
-added custom reply to link deletion
-added min caps setting to caps protection
-renamed timer delay to cooldown
-added option to disable caps warning for mods/subs/regulars
-will still payout currency bonuses even if starting payout is 0
-added options to disable live or offline payouts completely
-can now type !giveawaytime to see how much time is left for current giveaway (requires regular or mod+ permission)
-added giveaway option to either automatically or manually reroll a new winner
-added optional claim command system for giveaways
-changed chat to webbrowser interface to enable support for emotes and other images
-added settings tab option to show images in chat (default is off)
-fixed bug with donation messages
-enabled twitch and beam emotes in chat window
-fixed save bug with chat text size selection and moved the option from relay tab to settings
-added option to turn custom command feature off or on in general
-added pop-out chat option available by right click on chat or through options drop down menu
-fixed ranks database error when opening a freshly unzipped scorpbot application for the first time
-renamed "enabled" for individual commands to "active"
-added anti host spam check
-fixed bug with rank requirement check when too large
-added !streaminfo command
-no longer duplicates added info when editing existing quotes
-added general game settings tab with option to enable/disable all games in general
-individual games can now be turned on/off from chat with permission set in general games settings

-fixed error loading bot with no timers saved

-fixed command entry settings box in giveaway tab
-!commands is now customizable and optional via the swttings tab
-min timer interval is now 1 minute rather than 0
-timer list now shows current timer and remaining interval time
-fixed bug with timer delays which caused it to always be treated as minutes, ignoring hours and days
-added $nextrank
-fixed next rank info if set to a custom manual rank

-fixed bug preventing beam messages from appearing when containing special characters
-fixed roulette start bug when only connected to Twitch
-command editor permission info field is only visible if applicable
-giveaway 1 minute and 10 second reminders are now optional
-fixed bug with $writefile when appending to end of existing file

-added custom manual ranks
-can set ranks to be ignored in top hours/points lists
-fixed $game and $url variables when command is entered through bot GUI chat
-no longer leaves $writefile in command output
-added $math variable. usage: $math{2+2*(1+2)}
-fixed a few variables on command editor variables list
-follower requirement for giveaways
-fixed $datetime
-will now auto delete older debug logs

-can now add multiple mp3s at a time to custom song list
-fixed error editing 8ball responses
-increased giveaway maximum time
-added individual timer delays
-added option to format quote string
-now saves current timer index so that it will continue where it left off if bot is restarted
-added additional error handling when starting primary threads

-fixed currency2 payout if currency1 is set to 0
-fixed Twitch errors if using an invalid oauth-token
-added new message when attempting to obtain twitch oauth-token

-entrance message can now be set to on enter or on first public message
-fixed random $readfile so that it includes the last line of the file
-$randvalue will now return the result of $randomnum from the same string. In a case where there are multiple $randomnum, $randvalue(#) may be used. Example: $randomnum(0,10) $randomnum(0,50) $randvalue(1) $randvalue(2)
-added extra check for auto reconnect to beam constellation if connection is lost
-added alert sfx
-changed $writefile to $logfile (will have to update existing commands)
-added new $writefile command with full file path and more parameters. $writefile(c:/path/file.txt, text, overwrite true/false, first/last) Example: $writefile(c:/path/file.txt, text, false, last) will write "text" to file.txt adding to the end of the file without overwriting.
-added gfx/sfx to twitch follow alert
-added button to gfx tab for quick access to media folder
-added viewer entrance sfx
-fixed "invalid value" errors when opening bot for the first time
-fixed duplicate default spin minigame success/failure messages from loading when files are first created
-fixed bug where spin minigame messages were not deleting properly

-added optional secondary variable within $readfile brackets. Usage: $readfile(filename,random) will return a random line from a file, $readfile(filename,first) will return the 1st line of a file, $readfile(filename,last) will return the last line of a file, and $readfile(filename,#) will return the specific # line of a file. Optionally you can still leave out the 2nd variable which will still return the first 360 characters of the file including multiple lines.
-fixed errors with ankhbot import feature

-typing show after your song request command will whisper a viewers current requests
-tyging remove # or delete # will remove that matching viewers song request index as listed with show
-new command variable $shuffle will shuffle custom song list
-fixed some other errors with commands
-fixed some errors with song requests

-fixed error creating new commands

-added command types public/whisper/both
-Added optional confirmation message to addpoints variable: $addpoints(name,#,confirmation message)
-$addpoints(name,#,default) will whisper default confirmation message "You've been given # $currencyname"
-no longer relays whispers to bot from beam to twitch chat
-added per viewer optional entrance message (resets every 8 hours)
-added gui button to shuffle music list
-now removes .mp3 extension when updating currentsong.txt and nextsong.txt

-no longer appends date to quote when editing existing quotes through bot GUI
-fixed minor follow alert issue
-fixed some database loading numerical parse possible issues

-fixed so that currency2 no longer accumulates when disabled
-fixed bug with !points add/remove commands
-added quick whisper button to command editor
-added variable dropdown to gfx text section for alerts
-fixed viewer editor loading currency2 bug
-fixed twitch auto host
-fixed bug with saving/loading quotes
-fixed streamjar donation points bonus $ multiplier bug
-database now auto backed up before updating client
-now supports more than 1 $randomlist in a single command output
-now supports more than 1 $readfile in a single command output

-fixed loading counter bug

-changed default !randnum permission to moderator
-changed default so that !randnum is enabled
-fixed currentsong.txt and nextsong.txt
-will now recognize variables when pulling text from a file using $readfile or $randomlist
-fixed bug with editing existing gfx causing alert drop down lists to update incorrectly
-added skip button to music tab in gui
-added custom counter permissions
-enabled Subscriber permission requirement

-added $title and $status variables (both return the current stream title)
-added instructions to StreamJar login menu for how to obtain API key
-fixed 8ball permission requirement option
-added random number guessing game

-added option to prevent viewers from gaining hours
-removed last seen column from viewers list
-added $removepoints and $removepointsall variables
-if command requires a target and one is not provided it will whisper the user and cancel the command
-target variables (such as $url) should now work with alert messages
-added support for StreamJar
-added custom alert for StreamJar donations
-added donation logs on dashboard and in new files
-fixed $targetraids command
-added !uptime command prefab
-added $caster variable
-no longer retains @ for $target so that it doesn't break certain use (such as $target in $addpoints)
-added !command show option to display current settings for a command
-for commands $sfx, $randomlist, and $readfile if filename/path contain brackets quotations can be used to prevent it from breaking. example: $readfile("c:\folder(1)\test.txt")
-fixed command $sfx so that extension is optional but will still play properly either way
-added button for quick easy access to event log folder from dashboard

-added $targetraids variable
-possibly fixed overlapping text issue affecting some systems

-added Beam message delay to whispers to prevent dropped messages
-added whisper to target when $addpoints is used advising of given points
-added !setraids command (mods+). usage: !setraids name #
-fixed so that viewer raids are loaded properly
-fixed $readfile bug
-fixed command cooldown if whisper option is turned off

-multiple $randuser will now choose separately and may result in different viewers
-added $addpointsall(#) variable
-added confirmation message for !addregular and !setregular
-added $raids variable which will display $user's raids value
-added $raider variable which will increase the target viewers raids by 1
-fixed sfx bug causing extension to be case sensitive
-limited Beam messages to 360 characters to match Beams limit
-added command variable $readfile(filepath)
-added permission min_rank
-added command variable $addpoints(name,#)
-reorganized currency payout settings in GUI
-added option to customize song request command
-cooldown time whisper is now an option in the settings tab (default is off)
-fixed animation loops so that there is no longer an extra loop
-fixed song request on twitch when submitting full url
-added song request search function (default command is !songsearch)
-added optional sfx when any new message is received on twitch or beam (overridden by streamer name specific sfx)
-added google spreadsheet error handling/logging
-$raider will not increase raid value and will cancel out $addpoints if attempted again within 6 hours of the previous attempt of a specific target
-added !raider command prefab

-fixed broken $currencyname variable in toppoints lists
-added !permit command (mod+) to give viewers 30 seconds to post links

-fixed custom command 'check all text' bug
-fixed command user delay bug
-added whisper when command is on cooldown showing how much time is left

-will now auto clear saved access/refresh tokens if connecting to beam with a new oauth token
-added buttons to toggle show/hide oauth tokens for beam
-added $randomlist variable
-added dashboard scrollbar
-added button to open randomlist folder on dashboard

-fixed giveaway bug
-no longer rewards points if payout is set to 0 for either online or offline options
-added connection status to dashboard

-fixed $gfx on command variable drop down list

-fixed saving counters
-active time requirement for giveaways is now optional
-removed same message check and applied it only to timers
-fixed bug with spin game data
-if toppoints or tophours are set higher than the maximum of 20 it will simply display 20 results
-added $toppoints2 variable
-added import points list feature for importing a list of viewer points from a txt file
-added viewer editor (accessible through viewer list right click menu)
-added points2 column to viewer list
-added $gfx(name) variable to play animations via command

-fixed command sensitivity
-will now allow the same message repeated if at least 3 seconds have passed
-fixed overall command cooldown

-sfx and normal commands will now check beginning of entire text rather than just the first word so that multiple words will be detected
-fixed sfx command cooldown
-moved merged Beam and Streamer tabs into one to streamline login process
-added combined beam/twitch viewer online list
-fixed bugs with $target username ending up with double @'s and sometimes causing API ERROR and url issues

-can now completely customize 8ball reponse
-can no longer place roulette bets on invalid types
-bot will no longer send the same message twice in a row to prevent possible chat spam

-fixed gain currency and in giveaways defaults for new viewers
-fixed bug with updating gain currency and in giveaways on viewer list

-fixed error caused by empty rank list
-added option to purge all points/points2 and hours from viewers
-fixed sfx cost
-added global default sfx cost if custom cost is 0

-increased maxhours and maxpoints from 10 to 25
-fixed trailing space from breaking some commands in Beam

-fixed currency prevent transfer option save/load
-increased game/title max length for both beam and twitch textboxes
-added $tophours(#)
-added $randquote
-added $target1-9

-fixed so that leave message does not appear in bot chat when an anonymous viewer leaves on beam
-removed "30 minute" comment from roulette cooldown message as it is customizable
-fixed roulette settings save/load
-fixed error caused by entering invalid value in custom points giveaway field

-fixed error loading bot if no sfx files are stored

-commands now work through bot gui chat
-added check for failed google authentication when updating spreadsheet to prevent massive error spam in bot's chat window
-fixed setting chat output type when creating new command
-fixed bug with some variables when command output is set to both chats
-fixed "prevent transfer between viewers" currency option bug
-added "highlight" command prefab
-added button on dashboard to easily access the customfiles directory
-added check for being unable to update Twitch channel info when not editor
-added sfx drop down list in command editor
-fixed beam follow alert so that it no longer treats unfollow as a follow
-no longer announces beam follow if viewer had just unfollowed immediately before

-fixed 1+ viewers custom host alert

-added check for account link command to ensure a username is selected
-fixed beam streamer account authentication token refresh when expired
-can now use $resubmonths for on stream gfx alert

-added custom host alert text
-fixed new errors when only connected to twitch

-fixed bug with disabling gain currency on viewers list
-another fix for "online only" viewers list
-changing viewer points via online list works much better now

-fixed save/load of auto regular setting
-added variable and command prefab options to GUI command editor
-added option to disable transfer of points
-added SFX cost
-fixed error when right clicking header row of viewers list
-changing attributes on viewers list when in "online only" mode will now save properly

-fixed repeating message bug with commands
-fixed max entries option for giveaways

-added permission option for starting giveaways from chat
-added option to change stream window chroma colour
-fixed problem which sometimes prevented bot messages from appearing in Beam chat as it was blocked by its anti-spam system
-added option in settings tab to play sfx when streamer name is mentioned in chat (@name)
-redesigned counter system to save to txt files
-guide window no longer blocks main bot window

-added option for viewers to buy multiple entries to a giveaway
-now saves giveaway "skip previous winners" option when bot restarts (off by default)

-will now save current chat viewers, and hosting tabs
-fixed issue with saving command usage count
-added option to set whether command reponse is sent to only the viewer's chat or both Beam and Twitch

-fixed $count
-corrected icon for stream window
-added guide form

-fixed possible error when bot loads if there are no commands saved

-$playgif now begins at 1 rather than 0
-invisible permission will hide command from !commands and google sheet
-fixed errors with beam and twitch game info update through bot gui

-$playgif(#) will play animation #
-added live update check
-added option for commands to check full text (useful for secret words)
-!command on and !command off will now enable/disable specific commands from chat
-!command alltext will now toggle if it can be detected anywhere in chat message or must be at the beginning

-fixed !steam if result is a game not yet released

-added option to manually set viewer as a subscriber on viewers list (A = auto detect, Y = yes, always subbed)
-added option to disable filtered words
-added deathcounter text outline option
-added graphical alert animations with stream window for capture
-moved death counter to GFX tab and added support for multiple counters
-fixed bug preventing give points confirmation messages
-fixed Twitch follow alerts
-fixed Beam auto reconnect

-added payout settings for secondary currency
-added custom colour option for death counter text
-rank type drop down now saves and loads correctly
-added game search to twitch game name on dashboard
-improved typing efficiency for game name entry on dashboard

-fixed problem with beam streamer first time authentication
-added !commands which will whisper all available custom commands at your permission level
-added on stream death counter option (command requires mod permission and can be used to add 1 with !death, set with !death #, decrease 1 with !death -, and reset with !death reset)

-added last follow/host txt files saved to Stream folder
-fixed possible database error
-fixed checking duplicates for regulars on beam when adding from chat
-added dialog to Beam streamer authentication process

-fixed !steam if result is a free game
-added Beam auto hosting
-fixed removing Beam editors from list via right click option
-added secondary currency
-ranks can now be set based on either points or hours
-fixed command caster permission
-!setregular or !addregular will add a viewer to the regulars list (mod+ permission)
-viewers with editor permission status can now update stream title with !settitle
-viewers with editor permission status can now update stream game name with !setgame
-fixed betting on invalid numbers in roulette

-fixed remove all option for regulars lists
-moved regulars option from currency to settings tab

-host alerts option now saves correctly when bot is restarted

-increased max character limit for timers and commands to 500
-fixed remove and remove all options for regular lists
-partially recoded beam oauth token refresh process (may require reauthenticating once after updating)
-partially recoded gamewisp oauth token refresh process
-added $uptime variable (works with both twitch and beam)
-!steam with no search text will search for currently played game by default
-added points cost to song requests
-switched from Beam LiveLoading to Constellation
-finished custom song lists
-can request songs with either !songrequest or simply !sr
-oauth token boxes in login screen now act as password fields to prevent accidentally showing tokens on stream

-removed debug data from twitch game/title retrieval

-added $reqpoints so that custom commands can now require spending points. Usage: $reqpoints(#ofpoints)
-fixed twitch game and title on dashboard

-added cooldown between roulette spins
-fixed magic 8 ball enabled checkbox now saves
-added custom Roulette settings
-can now bet on 0, even, and odd in Roulette

-fixed roulette betting timer

-now announces specific winners of roulette

-fixed bug allowing betting on non-existing number in Roulette
-fixed pressing enter when typing chat message through bot
-fixed empty name bug in Roulette

-!purge now supports Twitch
-link detection now supports Twitch
-recoded !steam command
-added first version of Roulette for testing (mods must start with !Roulette)

-fixed Steam search incorrect price bug

-fixed message deletion in preparation for Beam API changes on August 1st
-decreased sensitivity of filtered words so that only whole words are detected
-added optional PM for new viewers when they enter for the first time
-added About dialog

-fixed filtered word removal
-will auto timeout viewers on beam for 10 minutes if they post 3 links in a row

-added filtered words
-link detection can now be set to specific permission level
-link detection can now auto delete the message as an option

-fixed timers so they now work properly when set to only beam or twitch
-added 1 minute and 10 second warnings to giveaway
-GUI now displays remaining seconds until end of giveaway
-added possible fix for intermittant Beam connection loss. Should now auto-reconnect properly.
-removed debug text when updating Beam game info

-fixed editing existing quotes through GUI
-fixed a possible intermittant uncaptured error

-fixed beam resub variable $resubmonths

-removed debug chat messages

-fixed auto timeout
-fixed !purge
-added auto connect to gamewisp option
-added beam ping to keep connection from timing out

-can now set caps check to auto timeout
-!purge command will clear messages from $target in Beam chat
-fixed viewer list "in giveaways" and "gains currency" columns from sometimes showing true/false instead of Y/N
-fixed offline points payout rate
-fixed song request if url contains extra variables after ID

-fixed !steam command prices
-enabled sub only giveaway option (currently only works with Beam)
-can now customize active time requirement for giveaways
-fixed possible instance where bot may not recognize sub/mod status in beam

-fixed error when clicking beam game/title refresh while beam is not connected
-corrected splash loading menu icon
-added message when beam streamer account is authenticated
-right click on viewer list will now select the target row
-added right click viewer list options to enable/disable point accumulation and giveaways for specific viewers
-can now use $resubmonths in beam resub message to show how many months they have subbed for. Suggest replacing default message with: "$user has been subscribed for $resubmonths months! Thank you!"
-can now use $resubmonths in gamewisp resub message to show how many months they have subbed for. Suggest replacing default message with: "$user has been subscribed for $resubmonths months on GameWisp! Thank you!"
-fixed GameWisp alerts

-Can now update Beam game/title provided Beam Streamer is authenticated in the login menu.
-Beam game name will auto populate list.
-auto regular setting (points/hours) now saves properly
-minigame permissions now save properly

-can now use "remove" as well as "delete" for deleting quotes (!quote remove #)
-any empty commands will be removed when bot loads.
-fixed some text overlap in gui
-fixed possible error when using !quote add
-fixed so that it's no longer possible to create a blank command
-fixed error caused by commands less than 3 characters long
-updated program icon

-can now gain exp/points on website streamers list by using ScorpBot

-removed some debug messages

-fixed $writefile
-can now run a quick 5 second giveaway simply by typing !giveaway which selects from all viewers who have spoken in the last 30 minutes
-fixed autoconnect settings
-added Google Spreadsheet support (currently supports quotes, commands, and song request list)
-Debug log parsing
-Can add/update streamer info on scorpbot.com through web tab
-current and next songs now saved to text files in Stream folder for displaying on stream
-fixed remove all songs button

-removed test messages from heist results
-now checks for and deletes leftover update temp folder to prevent possible update error

-fixed clear oauth button for beam streamer credentials
-now should retry beam authentication if refresh_token expires
-added GameWisp alerts
-can now customize heist join and already joined messages
-added remove points and hours options to viewer list right click menu

-fixed link check setting so that turning it off now works
-link detection now ignores mods+
-sub/follow point awards now work properly when viewer is online
-no longer checks rank when removing points for entries into events/games such as heist and giveaways
-can now display required members to begin heist with $memberreq
-now displays messages sent from bot in bot's chat window
-fixed Ankhbot import filename
-added Twitch follow alerts
-added streamer authentication for Beam (will be needed for updating game/title and sub only giveaways)

-@name tags are now recognized in chat
-caps check will now ignore moderators+

-added options to add 10 and custom points to all viewers online
-giveaway now ends and begins properly without the need to cancel
-giveaway now checks previous winners properly

-fixed bug where heist results may display even if there are no winners.
-added optional link protection alert
-added optional caps warning
-fixed so that bot will now recognize and handle beam username changes
-can now set viewer list to only show viewers online
-can now right click on viewer list to perform actions such as delete and add points/hours
-added actions to online viewer list
-fixed dashboard twitch game name/title update

-fixed giveaway bug: select from everyone online mode would find no eligible viewers
-heists now refund fees if fail to start with less than required crew members
-$game will now display streamers current game if no target name is provided
-when saving a quote it will now pull current game live from Beam rather than the bot dashboard
-now whispers viewer to confirm giveaway or heist entry
-viewers can now give points to other viewers with !points give targetname ### (!points being your custom points command)
-fixed command/timer linking
-will no longer allow duplicate entries in giveaway

-fixed error when creating first command
-added check to make sure ranks list is not empty which could cause errors
-added host alerts
-no longer shows join/leave message for anonymous viewers on beam

-fixed problem with heists determining winners

-may have fixed intermittant stats temp resetting
-fixed error when removing last song in queue

-fixed !nextsong
-added Heists minigame

-added !veto for mods+ to skip songs (!skip also works)
-fixed so that song is removed from saved database when removed from queue automatically

-fixed songrequest script errors
-added commands !song and !nextsong

-twitch login will auto correct to lowercase to prevent possible errors
-$readapi will now convert variables in path
-added additional data to debug log error reporting
-fixed songrequest for mobile urls
-providing invalid songrequest will now log error and not interrupt bot function
-Song Request queue now saves/loads automatically

-added song requests
-added command !songrequest (followed by either youtube URL or video ID)

-added sound effects
-added new command output variable $sfx(filename)

-New timers save properly.
-timers now link to commands properly
-added variable $writefile(filename, text) which saves to new folder "customfiles"
-added variable $datetime which returns current date and time
-!quotes command permissions will now recognize higher levels

-fixed so that it no longer converts variables in !spin add confirmation messages
-fixed so that beam alerts should now receive and display resubscribe messages

-!steam now shows price
-editors+ can now add win/lose msssages to spin game with "!spin add +w/l text" (replace !spin with custcom command if neccessary)

-now properly loads auto host list
-increased min window width
-can now search Steam game library with !steam game

-another fix for $randuser so that it will pick properly and no longer call out lurkers
-$nxtrankreq will display points required for viewer to reach next rank
-added resubscribe alert message

-fixed $randuser
-users are now active if spoken within 1 hour rather than 30 minutes

-$points check for $target is no longer case sensitive
-When linking accounts, the higher value points/hours will be retained.
-Fixed sub alerts.

-$points can now return the points of $target (eg: "!otherpoints" with output "$target has $points $currencyname!")
-rank up messages will only show for active users (have spoken within the last 30 minutes)
-links in chat will now open in default browser when clicked
-fixed so that editing will not attempt to create a new command if not found
-fixed empty command/quote creation in GUI
-now assigns points bonus (set in currency tab) for subscribing or following on beam
-now saves/loads currency bonuses
-live sub/follow alerts
-new program icon

-$url and $game now work for Twitch caster commands
-can now set auto connect for twitch/beam individually
-fixed user_specific permission for commands
-added viewer count

-fixed bug with $toppoints

-fixed error in auto connect

-command user delays are now functional
-fixed command issue after importing from ankhbot (previously restarting bot was required)
-fixed error when starting giveaways from bot GUI
-auto connection option now works
-fixed viewer account linking (!connect)
-fixed a bug with bot sending whispers

-fixed duplicating viewers issue (first time running this new version will convert existing viewers database to a new file)
-increased speed of importing viewers from ankhbot

-can now add points to viewer even if they are not in the channel
-fixed changing "in giveaways" for specific viewers on viewer list
-fixed changing "gains currency" for specific viewers on viewer list
-fixed editing points for specific viewers on viewer list
-mods+ can now start giveaways from chat (!giveaways start prize|time|command|cost). Note: command and cost are optional.

-mininum points permission for commands now works "+p(points)"
-commands/timers/quotes now expand vertically with window size
-giveaway feature is now working
-$randuser will now return the name of a random viewer who has spoken within the last 30 minutes

-timers will now be skipped properly if not enabled
-added error handling/logging to timers
-viewer list will now expand vertically with window size
-editing an existing command without setting permission will default to existing permission already set rather than resetting to everyone
-removed group server connection as they have been decommissioned by twitch
-user_specific command permission now works "+u(username)"

-beam will now attempt to auto reconnect if connection is lost (provided the auto reconnect setting is enabled)

-quotes permissions now save properly
-mod/regular permissions now allow higher permissions levels as well
-option to display viewer enter/leave messages in bot chat
-fixed error with command to add points to a specific viewer

-fixed possible beam error during player leave event

-timer edits now save properly
-many individual settings now save properly
-added loading splash form when program starts
-hopefully resolved intermittant double message issue
-added command moderator permission check
-now detects beam users as mods
-added debug logs

-auto update test
-timers can now be set to twitch, beam, or both

-first alpha release