No description
Find a file
2026-10-24 21:59:25 +02:00
src Add HIGH_RESOLUTION option for 300x600 dpi printing 2026-10-24 21:59:25 +02:00
.env.example Add HIGH_RESOLUTION option for 300x600 dpi printing 2026-10-24 21:59:25 +02:00
.gitignore Initial commit: Telegram bot for Brother QL label printers 2026-10-24 21:03:02 +02:00
Cargo.lock Use ql-label from LucentW fork instead of local path 2026-10-24 21:07:43 +02:00
Cargo.toml Use ql-label from LucentW fork instead of local path 2026-10-24 21:07:43 +02:00
README.md Add HIGH_RESOLUTION option for 300x600 dpi printing 2026-10-24 21:59:25 +02:00

brother-bot

Bot Telegram che stampa sticker e immagini su una stampante di etichette Brother QL (testato con QL-500 e rotolo continuo da 62 mm), usando la libreria ql-label (fork con supporto QL-500), con dithering Floyd–Steinberg.

Cosa fa

  • Accetta foto, sticker statici (WebP) e immagini inviate come file. Gli sticker animati/video vengono rifiutati.
  • Rende bianco lo sfondo trasparente, ritaglia i bordi vuoti e scala l'immagine sulla larghezza del nastro (696 punti, ~59 mm), senza superare MAX_LENGTH_MM in lunghezza (default 100 mm, margini inclusi).
  • Alle foto applica anche un aumento di contrasto (auto-levels) prima del dithering.
  • Schiarisce i toni medi (default 50%) per compensare l'ingrossamento dei punti della stampa termica, lasciando invariati il nero e il bianco pieni.
  • Stampa un lavoro alla volta: se la stampante è occupata, avvisa che si è in coda.
  • A stampa finita conferma il successo e, se la stampante non ha la taglierina (es. QL-500), ricorda di tagliare l'adesivo con la levetta.

Configurazione

Copia .env.example in .env e compila:

Variabile Descrizione
TELOXIDE_TOKEN Token del bot, da @BotFather
PRINTER_MODEL QL-500, QL-720NW, QL-800, QL-820NWB
PRINTER_SERIAL Numero di serie USB (lsusb -v -d 04f9: | grep iSerial)
MAX_LENGTH_MM Lunghezza massima dell'etichetta in mm (default 100)
LIGHTEN_PERCENT Schiarimento dei toni medi prima del dithering (default 50, 0 = off)
HIGH_RESOLUTION Modalità 300×600 dpi, più fine lungo il nastro (default false; non supportata dalla QL-500, non testata)
ALLOWED_USERS ID utente Telegram autorizzati, separati da virgola. Vuoto = tutti

Per scoprire il proprio ID basta scrivere al bot con ALLOWED_USERS impostato a un valore qualsiasi: il messaggio di rifiuto lo riporta.

Uso

cargo run --release                                   # avvia il bot
cargo run --release -- render foto.jpg out.png --levels   # anteprima, senza stampare
cargo run --release -- print sticker.webp             # stampa un file locale

L'anteprima di render è esattamente il bitmap (con dithering) che verrebbe inviato alla stampante.

L'utente che esegue il bot deve poter accedere al dispositivo USB (ad esempio essere nel gruppo lp).