SkillAgentSearch skills...

SassBot

Discord Bot for your favorite E-girl. Checks the status of Twitch, Kick, Youtube, Onlyfans, Fansly, Chaturbate, Cam4, MyfreeCams, BongaCams, Stripchat, ePlay, and Manyvids streams and announces if they are online to a discord channel.

Install / Use

/learn @Bombg/SassBot

README

SassBot

Discord bot for your favorite e-girl

Platforms Supported:

  • Twitch
  • Kick
  • Youtube
  • Onlyfans
  • Fansly
  • Chaturbate
  • Cam4
  • MyFreeCams
  • BongaCams
  • StripChat
  • ePlay
  • ManyVids

Features

  • Get notifications when your streamer is online sent to a discord channel
  • Track Kick subs and give roles for subbing
  • Track and search Kick clips
  • Rerun detection/support. If stream titles contains a variation of rerun/rr/not live then it will be detected as a rerun.
    • by default reruns won't be announced, but you can choose to announce them to custom roles just for reruns
  • Track multiple accounts per platform. (for example, if they have a paid and free account)
  • There's a minimum time between notifications, so your discord members won't get spammed if you're having connection issues.
  • Bot's status reflects what the streamer is doing. Offline or streaming on Kick, yt, etc.
  • White list commands to certain roles.
  • Log who uses what commands
  • Add/remove images yourself to embed into notifications via image commands. Images are rotated through, so add as many as you like.
  • Rebroadcast online notifications with rebroadcast commands
  • Subathon online timers via subathon commands
  • Send alerts during peak discord usage times
  • ... and many more!

Commands

  • Whitelisted commands are prefixed with /zmod or /ymod
  • /stream-status - See if your streamer is currently offline or online. Shows time online/offline and total time streamed.
  • /ping-toggle - Toggle for role pings in online announcements. This is defaulted to false, so set true if you want role pings
  • /announce-rerun-toggle - Toggle if reruns will be announced. If a title contains a variation of rr/rerun/not live then the stream will be detected as a rerun.
  • /title - Allows you to temporarily add a custom title for a platform/username combo. TEMP_TITLE_UPTIME in constants.py determines how long a temp title added via /title will be used for.
  • Image list commands - Images can be manually added. These images are used for embeds for all supported platforms.
    • /image-list-show - show the list of image urls that will be rotated through during online announcements
    • /image-list-add - add an image url to the image list
    • /image-list-remove - remove an image from the image list. Must provide the url
  • Pin image commands - If there is no pinned image, Kick, Twitch, CB, and YT use thumbnail images from the video feed, OF/Fans will embed images from the image list.
    • /image-pin - pin an image for a number of hours you choose. Pinned images will be embedded into notifications in the announcements channel.
    • /image-check-pin - Check to see if an image is pinned
    • /image-unpin - unpin an image if it is pinned.
  • /rebroadcast - Send out online notifications to the announcements channel IF the streamer is online. Isn't isntant but goes off when the next online check is made.
    • /rebroadcast-image - same as above but you can attach a URL of an image to embed into the new announcement(s)
  • Subathon commands - apart from commands, subathon status is also displayed in the Bot's status.
    • /subathon - check the status of the current subathon, if there is one.
    • /subathon-start - start a subathon timer
    • /subathon-end - end a subathon timer
  • Stats
    • /users-graph Get a graph of online/dnd/idle/ users in your discord. The data is mainly used to send out alerts but why not use it for graphs as well!
      • Has two optional arguements, InputDate and Days. InputDate defaults to todays date and days (to include in graph) defaults to 1.
    • /stream-stats Shows total time streamed for the week, two weeks, and four weeks for each platform.
  • Anonymous questions/confessions/appeals
    • /confess - unlogged and anonymous confession that a user can post to a channel via the bot. Must be reviewed first
    • /confess-review - whitelisted roles/people can review submitted confessions and approve or deny them.
      • approved confessions/questions are posted to a preset channel immediately
    • /confess-button - a forever button that does the same thing as /confess
    • /ban-appeal-button - a forever button that allows someone to submit a ban appeal
    • /appeal-review - review a submitted ban appeal
  • Test commands
    • /test-permission - test if Sassbot has the necessary permissions to post in the specified channel ID.
  • Kick commands
    • /kick-connect-button - a forever button that uses Kick's oath to connect someone's Kick/Discord accounts
    • /kick-clip-search - search through logged Kick clips. (wont work until clips have been scanned)
    • /kick-clip-search-author - search clips by author
    • /kick-get-from-discord - Get the Kick usernername of a Discord member
    • /kick-manual-connect - Manually connect someone's Kick account if you're sure who they are
    • /kick-emote-report - Get information about a specific emote prefix
    • /kick-prefix-report - Get the most common emote prefixes used in chat

Quick Setup Example

  • Read 'How to set up the bot' section if you don't know how to get some of these vars.
    • This assumes you have some knowledge of Discord/Docker/. If unsure, skip this section.
  • Check .envExamples for a full list of all vars.
  • Check docker-compose.yml for more examples
services:
  sassbot:
    image: ghcr.io/bombg/sassbot:latest
    container_name: Sassbot
    restart: unless-stopped
    environment:
      SECRET: 'token' # string, the bot token you are given by discord
      GUILD_ID: discordGuildIdHere # int, the guild ID of the discord server the bot is in
      whiteListedRoleIDs: '[id1,id2]' # int, User IDs and/or Role IDs of white listed people/roles
      KICK_NOTIFICATION_CHANNEL_ID: channelId # int, id of the notification channel for Kick
      kickUserName: '["kickUserName"]' # str, user name of the Kick streamer

How to set up the bot:

  1. Go to https://discord.com/developers and set up an app and get a token. Put that token in .envExample file with the var SECRET.
  2. At https://discord.com/developers/ - generate an invite code under oauth2 to invite your bot to your server. Under scope make sure bot is checked. Give the bot permissions you want it to have. At minimum it'll need to be able to post messages and embeds
  3. Go to the bot section in the developers portal and turn on all the intents.
  4. In the .envExample file, change the GUILD_ID value to the guild id of your server, and each platform NOTIFICATION_CHANNEL_ID's to the channel ID you want alerts posted to. To easily get both of these IDs, in discord advanced options turn on developer mode. After that you can right click servers/channels and a new option to copy the IDs will be available. Also edit and add vairus URLs to your streamer in .envExample. Everything is described in comments.
    • After editing .envExample rename it to .env - This will be used before default values.
  5. Replace images in the image folder with those of your streamer, but keep same file names. OR change their paths in .env
    • images/errIcon.png - icon used for embeds if there is an issue getting one from the platform, or if one doesn't exist
    • images/twitErrImg.jpg - default photo used for embeds if no other thumbnail or photo can be grabbed from the image list (if its empty)
    • images/avatars/calmStreamer.png - Bot avatar if streamer has streamed within the MIN_TIME_BEFORE_AVATAR_CHANGE time frame (default 48 hours)
    • images/avatars/pissedStreamer.png - Bot avatar if streamer hasn't streamed within the MIN_TIME_BEFORE_AVATAR_CHANGE time frame
  6. Make sure you have python 3.10 installed.
    • make sure you have Chrome/Chromium another browser may work but not tested.
    • Make sure Xvfb is installed if on Linux. Xephyr, or Xvnc may work but untested
    • run command 'pip install -r requirements.txt'
  7. Start the bot: 'python3 run.py' or 'python run.py'

How To: Docker Compose or Portainer

  1. Install Docker
  2. Install Docker Compose and/or Portainer
  3. Complete steps 1-5 above in the "how to set up the bot" section
  4. Edit docker-compose.yml and follow the commented instructions
  5. If using docker compose, from the Sassbot directory start it via "sudo docker compose up -d"
  6. If using Portainer go to stacks > add stack
    • Copy paste over the non commented code from docker-compose.yml into the window
    • Deploy Stack

Known Issues

  1. If multiple accounts are streaming on the same platform at the same time, /rebroadcast will only show an announcement for one of the accounts.
  2. Cam4 will ban your IP if you make too many calls from the same ip to the api. Make check times very long and/or rotate your ip
  3. Fansly will 404 you for a period of time if you make too many requests from the same ip.
  4. If the requesting ip is in a state that requires age verification, some of these checkers wont work.

Update History

  • 12/10/2025
    • Added support for Kick Kicks for roles
  • 9/13/2025
    • Added kick-prefix-report command
      • Lists the most common emote prefixes used in chat
  • 8/10/2025
    • Day or two after last release Kick got more strict with some non public APIs
    • Fixed non api Kick checker
    • Fixed Kick clips module
    • new module requirement in requirements.txt
  • 8/7/2025
    • .env file now used instead of AppConstants
      • .envExample included to show what vars .env can have
      • Moved bot token from secrets/token to .env SECRET var
      • This will allow future updates where things won't break on update if new vars are added
      • This also means the vars can be changed via docker environment vars as well
    • Lots of new features below. Check .envExample for new vars for them
    • Whitelisted commands renamed into groups
      • commands that require whitelist permission are now under zmod and ymod
    • Bot now collects Kick clip data
      • kick-clip-search command
      • announces clip stats to KICK_
View on GitHub
GitHub Stars63
CategoryDevelopment
Updated7d ago
Forks12

Languages

Python

Security Score

85/100

Audited on Mar 29, 2026

No findings