Song Submission for Bosman vs Wozniak
(I'm Toni-P42 on Twitch.)
I modified and extended the bot since the last show. I will use this post to keep an up-to-date description of the bot's commands.
The most important change is that commands can now be whispered to the bot using Twitch's whisper feature (e.g.
/w SoundtrackBot !mysong). If you whisper a command the bot will reply with a whisper, reducing the level of bot spam in the main chat potentially to zero. You can still post commands to chat to have the response posted in chat.
The bot is always online. You can submit songs at any time, including during the week. Songs will be persisted indefinitely until a moderator explicitly deletes them.
The bot respects Twitch's rate limit for posted messages. However, Twitch applies a different and undocumented set of spam detection rules to whispers. It might happen that the bot gets temporarily shadowbanned from using whispers. In this case, it will still be able to receive commands via whispers but won't whisper a response back. Commands in main chat are unaffected by this. The bot also avoids posting the same message twice in a row If you're not getting a response to a command, you probably have triggered one of these anti-spam-detector counter measures.
!song http://...: Submits a song. Every user can only have one song. Submitting another song will overwrite your previous submission.
!song: Updates the submission date of your existing song. This is equivalent to resubmitting your currently submitted song. Use this to confirm that your song is still up-to-date in case a moderator chooses to delete old songs.
!currentsong: Will post the last picked song.
!mysong: The bot will whisper you the song you've submitted. This command has to be whispered to the bot. It will be ignored if posted in main chat.
!mysongsucks: Your song will be removed from the pool.
!songinfo: Will post the current number of submitted songs.
!songhelp: Will post a short list of available commands.
!davidwise: Posts a random song from David Wise from a fixed list of his songs. Moderators can use the command in main chat. Regular users can only whisper it.
!picksong: Randomly picks a song from the pool of submitted songs. The song is then removed from the list. The song is posted to chat if the command was sent to chat or whispered as a reply to the moderator if the command was whispered to the bot.
!favorite: Will add the last picked song to a list of favorite songs.
!favorite http://...: Will add a song to a list of favorite songs.
!pickfavorite: Randomly picks a song from the list of favorite songs. The song is posted to chat if the command was sent to chat or whispered as a reply to the moderator if the command was whispered to the bot. The song will not be removed from the list.
!currentsong on/off/restrictedWill enable, disable or restrict the !currentsong command. When restricted the !currentsong command cannot be used for three minutes after a song has been picked.
!deletesongs 7 days: Will delete all songs older than the given number of days. (7 in this example).
!deletesongs all: Will delete all songs.
Oscillator last edited by
!davidwise: Posts a random song from David Wise from a fixed list of his songs.
Why have any other commands? ^_^
naltmank last edited by
@ElTorro once Bosman beats the Woz in three weeks time (calling it), can you post the !davidwise list? I'd love to see what you deemed to be essential!
Olf_Himself last edited by
@ElTorro Is it possibly to make it so anyone can use !davidwise ? It's just too good of a command. If necessary limit it to whispers for non mod plebs.
@Olf_Himself Done. Everyone can use
!davidwisenow. Moderators can use it in the main chat. Regular users can whisper it.
@ElTorro Just want to say thanks for the work you put into this. It was incredibly helpful last week and I think it also makes the stream more fun for everyone
Spidarro last edited by
@tapioks ive just discovered this thread and making my way through your soundcloud now.
good work!! :medal:
Added some new things. The
!currentsongcommand can now be restricted or disabled with
I'd also suggest that we delete old songs regularly to give current viewers of the show a better chance to have their song picked. But that's up to Kyle!
in case the betting bot is still offline next week, I cleaned up and improved the betting feature in SoundtrackBot that I improvised for today's stream.
!bet 123456: Places a bet. The score you bet on has to be greater than 0. Obviously, every user can only place one bet at the same time, but you can update your bet.
!betinfo: Posts the number of placed bets.
!bethelp: Posts a short list of available betting-related commands.
!openbets: Opens the bets! This command needs to be posted for the bot to accept bets. Otherwise the bot will just silently ignore them. It also clears all bet submissions if the last betting round is older than three hours.
!closebets: Closes the bets. The bot will not accept new bets afterwards.
!clearbets: Closes the bets and clears all bet submissions.
!score 123456: Posts the winning bet (or multiple winning bets if multiple persons are equally close to the final score). Whisper this command to the bot to hide the response from chat.
tonight the bot has been temporarily shadow-banned for 24 hours from posting whispers. This happens when Twitch's anti-spam system kicks in. Unfortunately, Twitch does not publish the rules of that system. Modding the bot might help, but that's only a guess.
In any case, if that happens the bot will still read all commands and will still be able to post messages in chat . So the fallback solution in this case is to post commands like
!picksongin main chat.
If I am present during the stream, I will reconnect the bot with one of several fallback accounts that I've prepared for situations like this.
A good part of the bot's code already only implements several rate limiters to avoid this. I added an additional rate limiter that will restrict the number of different, non-moderator users that can receive whispers from the bot to 15 different users per hour. Important moderator commands like
!picksongwill bypass that limiter. Hope that helps.
We can ask Twitch to whitelist the bot for whispers: https://discuss.dev.twitch.tv/t/are-your-whispers-not-going-through-for-your-bot/5183
However, only channel owners can ask for that. I sent them a support ticket, and they rejected my application for that reason. So one of you guys would have to send a ticket from the EasyAllies Twitch account via https://twitch.tv/help containing the following information:
- Description of what your bot does with whispers: the bot manages song suggestions and high score bets. Viewers can whisper commands to the bot and have him whisper back their currently suggest song, their current bet, and general statistics.
- How many whispers an hour, and day you send: during a stream the bot serves several hundred viewers and may send between 100 and 500 whispers or more.
- The bot's username: SoundtrackBot
the number of submissions has reached over 350 songs. Many of these submissions are almost two months old. One way to clean up the pool is to regularly delete old songs, for instance with
!deletesongs 30 days. But I leave that up to Kyle.
To deal with the growing number of old songs I adjusted the way songs are picked to give regular viewers a higher chance of having their song picked over old submissions: Submissions that are not older than
6 days and 21 hours30 days have a higher probability of being picked than older submissions. With a probability of 66% the bot will pick a song from the pool of those recent submissions. With a probability of 33% the bot will pick a song from the pool of all submissions.
You can update the timestamp of your existing submission by simply typing
!song(without link) into chat (or by whispering it to the bot, which is possible for all commands). Do this once per month to ensure that your submission is in the high probability list.
Suggestions and feedback for a better system are welcome. Of course, Kyle has the final word. ;-)
Oscillator last edited by
How are people that don't read the forum going to know about that feature?
Sazime last edited by
@Oscillator The same way people who don't read manuals don't know how to program their VCR? Otherwise, people tend to be pretty helpful in chat. :)
parasitepaladin last edited by
Interesting idea for that timestamp!
ElTorro last edited by
!songhelpcommand links to this thread. I might make a new thread to make it more clear through its title that it contains the documentation for the bot. In general, I think it's more efficient to just link to this thread than to explain everything during a stream.
Kornfan2007 last edited by
Personally, I would prefer to go back to any song has a chance of being picked. I will want the same song every week until it comes up, so now I will have to resubmit it every week (well !song).
Sazime last edited by
@Kornfan2007 I think the idea is to reward regular viewers more than someone who might not be watching the stream.
Don't forget, you can submit all week long. If you submit the next day, you're in the higher percent chance of picking through the next BozWoz stream.
ElTorro last edited by
We can also just extend the duration for how long songs stay in the higher-probability list from one week to 30 days. That might still be better than deleting old songs.
For now, I increased the "double probability" interval to 30 days. The poll in chat today suggests that chat prefers a longer interval. So you only have to reconfirm your submission with
!songonce a month. Personally, I think it's better than deleting old songs automatically. Kyle can still delete olds songs manually.
The motivation behind this is to let songs expire in some way. People who watch the show should have a higher chance than people who stopped watching the show. Giving a sign once a month that you are still watching is ok, IMO.