*** This project lives @ https://git.rickelobe.com/rich/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 $octostat command (Requires that your printer is connected to Octoprint)
  • Query & Monitor Bambu Lab Printer Status using the $bambustat command (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 $printstat command
  • 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

Screenshot of $help

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 calls
  • bambu-connect >= 0.3.1 — Bambu Lab printer integration via local MQTT
  • paho-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

  1. Create a Discord Bot via the Discord Developer Portal
  2. Copy bot_config.conf.example to bot_config.conf and fill in your values (see below)
  3. Rename octoapi.conf.example to octoapi.conf and 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/
S
Description
A Discord Bot that can be used to monitor & query the status of your 3D printer via Octoprint, among other things.
Readme MIT
51 MiB
0 Stars 1 Watchers 0 Forks
2022-12-10 00:37:04 +00:00
Languages
Python 100%