FamilyBot is a Discord bot that tracks Steam Family libraries. It notifies you when someone adds a new game, helps find common multiplayer titles among friends, and monitors wishlists for deals.
This is a modified and refactored version of the original Chachigo/FamilyBot.
The project is organized as a Python package:
FamilyBot/
├── src/familybot/ # Main bot logic
│ ├── FamilyBot.py # Entry point
│ ├── WebSocketServer.py # Token communication
│ ├── config.py # Settings loader
│ ├── lib/ # Shared utilities and database logic
│ ├── plugins/ # Bot features (Steam, Epic, Tokens)
│ └── web/ # Web dashboard (FastAPI)
├── scripts/ # Maintenance and setup scripts
├── doc/ # Manuals and planning docs
├── config-template.yml # Configuration template
└── pyproject.toml # Dependencies and metadataFamilyBot combines a Discord bot with a web-based dashboard.
- Interaction: Uses
interactions.pyto handle Discord commands and events. - Plugins: Modular features are loaded from the
plugins/directory. - Storage: Uses SQLite to cache game details, wishlists, and user mappings locally.
- Automation: Uses Playwright to extract Steam web API tokens automatically.
- Sessions: Saves login states so you don't have to log in repeatedly.
- Admin Control: Use
!force_tokento refresh tokens manually.
- Status: Check if the bot is online, see cache stats, and view recent library additions.
- Logs: A built-in viewer for monitoring bot activity in real-time.
- Themes: Choose from several Bootswatch themes (with dark mode support).
- Control: Purge caches or trigger database population from your browser.
- Python 3.13+
uvfor dependency management (recommended)misefor environment management (optional but recommended)
We recommend using the just command runner for a smooth setup.
Install mise, then run:
mise installjust setupSet up your Steam session for the token sender:
just setup-browser- Create an application on the Discord Developer Portal.
- Disable Public Bot and enable all Privileged Gateway Intents.
- Under OAuth2 -> URL Generator, select
botandAdministrator. Open the generated link to add the bot to your server. - Copy your bot token from the Bot section.
Fill out config-template.yml and rename it to config.yml.
- Discord IDs: Right-click users/channels in Discord (with Developer Mode on) to copy IDs.
- Steamworks API Key: Get one at steamcommunity.com/dev/apikey.
- IsThereAnyDeal API Key: Register at isthereanydeal.com.
- Go to steamapi.xpaw.me.
- Use
IFamilyGroupsService/GetFamilyGroupForUserwith your SteamID and API key. - Your Family ID will be in the response.
just run # Start the bot
just status # Check config and environment
just populate-db # Warm the cache with library data
just logs # Watch the logs in real-time
just --list # See all available commands- Bot won't start: Double-check
config.ymlfor missing keys or trailing spaces. - No data: Run
just populate-dbto ensure your local database isn't empty. - Permissions: Ensure the bot has "Administrator" or sufficient channel permissions.
For more details, see the scripts/README.md or the Web UI guide.