*** This project lives @ https://gitlab.rickelobe.com/Bots/R0b3BOT ***
Description
This is R0b3's bot, originally built as a Discord bot to display 3D printer status. It now also runs as a Matrix bot, both operating simultaneously in the same process.
Features
- Query & Monitor OctoPrint 3D Printer Status using the
$octostatcommand (Requires that your printer is connected to Octoprint)

- Query & Monitor Bambu Lab Printer Status using the
$bambustatcommand (Requires a Bambu Lab printer accessible on the local network via MQTT)- Displays print state, progress percentage, time remaining, current layer, bed temp, nozzle temp, and chamber temp
- Optionally captures and attaches a camera snapshot from the printer's RTSPS stream (requires ffmpeg on the host)
- Updates the bot's Discord status to show live print progress; alternates between OctoPi and Bambu status every 30 seconds when both printers are running simultaneously
- Query both printers at once using the
$printstatcommand - Play a selection of sound clips to voice channel members using the various commands (
$trololo,$oops,$promoted, etc) — Discord only - Matrix support — the bot can connect to a self-hosted Matrix homeserver (Synapse/Dendrite) and respond to the same text commands in E2E-encrypted rooms
Commands
All text commands are available on both Discord and Matrix. Sound/voice commands are Discord-only.
Requirements
Install all Python dependencies using the provided requirements.txt:
pip install -r requirements.txt
Dependencies:
discord.py[voice]>= 2.6.4 — Discord bot framework (voice support included)requests>= 2.32.3 — HTTP client for HomeAssistant REST API callsbambu-connect>= 0.3.1 — Bambu Lab printer integration via local MQTTpaho-mqtt>= 2.0 — MQTT client library (required by bambu-connect)matrix-nio[e2e]>= 0.21 — Matrix bot client with E2E encryption support (optional, only needed if using Matrix)
Optional: Camera snapshot support
To enable camera snapshots with $bambustat, ffmpeg must be installed on the host running the bot. Set bambu_camera_enable = true in bot_config.conf once ffmpeg is available.
Optional: Matrix E2E encryption
Matrix support with E2E encryption requires the libolm system library:
apt-get install libolm3 # Debian/Ubuntu
Configuration
- Create a Discord Bot via the Discord Developer Portal
- Copy
bot_config.conf.exampletobot_config.confand fill in your values (see below) - Rename
octoapi.conf.exampletooctoapi.confand configure OctoPrint settings (if using OctoPrint)
bot_config.conf Keys
[bot-config]
| Key | Description |
|---|---|
discord_auth_token |
Bot token from the Discord Developer Console |
bot_command_prefix |
Command prefix (e.g. $, !, /) |
hass_url |
URL to your Home Assistant instance |
hass_token |
Long-lived access token for Home Assistant REST API |
hass_light |
Entity ID of the light at your printer |
octoprint_ip_address |
IP address of your OctoPrint/OctoPi host |
bambu_ip_address |
IP address of your Bambu Lab printer on the local network |
bambu_access_code |
Access code shown on the printer screen (Settings > WLAN) |
bambu_serial_number |
Serial number of your Bambu Lab printer |
bambu_camera_enable |
Set to true to capture camera snapshots with $bambustat (requires ffmpeg) |
statping_enable |
Set to true to enable StatPing service status integration |
statping_url |
URL of your StatPing instance |
statping_api_key |
API key for StatPing |
mmr_checker_enable |
Set to true to enable MMR checker |
mmr_checker_interval |
Seconds between MMR checks |
mmr_api_url |
MMR API URL |
[matrix-config] (optional)
Adding this section enables the Matrix bot. All five keys are required to activate it.
| Key | Description |
|---|---|
matrix_homeserver |
Full URL of your Matrix homeserver (e.g. https://matrix.example.org) |
matrix_user_id |
Full Matrix user ID for the bot account (e.g. @r0b3bot:example.org) |
matrix_password |
Password for the bot account. Used on first run to register the device; credentials are then saved to matrix_store_path and reused on subsequent restarts |
matrix_room_ids |
Comma-separated list of room IDs to listen in (e.g. !abc123:example.org,!def456:example.org) — use room IDs, not aliases |
matrix_store_path |
Directory for the E2E crypto store (Olm sessions, device keys). Default: ./matrix_store/ |
