No description
Find a file
brian 139c74123e
All checks were successful
Create and publish a Docker image / build-and-push (push) Successful in 18s
fix: Read receipt
Send read receipt if it's intended for bot, not just when it's being processed
2026-01-10 18:20:57 +00:00
.github/workflows CI: Update to forgejo setup 2026-01-05 08:45:12 -05:00
docs README 2025-12-09 01:15:11 -05:00
.gitignore Update container location 2025-12-04 07:09:29 -05:00
config.example.json Printer over network instead of USB 2025-12-04 06:31:18 -05:00
docker-compose.yaml Update container location 2025-12-04 07:09:29 -05:00
Dockerfile Add log and docker stuff 2025-12-04 06:56:09 -05:00
main.py fix: Read receipt 2026-01-10 18:20:57 +00:00
pyproject.toml Printer over network instead of USB 2025-12-04 06:31:18 -05:00
README.md README 2025-12-09 01:15:11 -05:00
uv.lock Printer over network instead of USB 2025-12-04 06:31:18 -05:00

Signal Bot

Signal bot for myself.

Commands:

  • !help: Lists available commands and descriptions.
  • !todo: Print out message onto receipt paper.

Uses filipre/signalbot, which requires bbernhard/signal-rest-api to be set up.
Also uses Python-ESCPOS to communicate with the printer.

Commands

Currently, only 1 real command exists, which is what this project was built for, but can be easily extended.

Command: TODO

Send a message starting with !todo, optionally with image attachments, and it will print it out onto a receipt paper. Once it is printed and cut, the bot will react to the message with the little printer emoji.

The ESCPOS library supports various modes for connecting to the printer.
I've originally used USB on a Linux box and had the device in the config to be /dev/usb/lp0, but wanting to move it to a Docker container on my server, hooked up the printer to the network instead. You may also have to change line 53 from Network to File (as well as the import).

screenshot screenshot

Actual TODO regarding this project

  • Add docs explaining setup.
  • Optionally accept ENV variables over values in config.json