Signal Multicast Bot

This project makes use of a (Postgres) database and a (configured) signal-cli installation to create a service similar to what moderated mailing lists provided some years ago, but on Signal:

  • administrators create lists
  • users subscribe to them or are added by administrators
  • administrators send messages which are distributed to all subscribers

I know, Signal already has groups, but this is made for announcement-like communication. The users don’t know who else is on the list, and everyone gets the messages in a one-to-one chat.

Bot commands

Basic (everyone can send these commands to the bot)

bot help
bot subscribe <GROUPNAME> <PARTICIPANT NAME>
bot unsubscribe <GROUPNAME>

Administrative (only select people can use these commands)

bot listgroups
bot addgroup <GROUPNAME>
bot removegroup <GROUPNAME>
bot list <GROUPNAME>
bot add <GROUPNAME> <PARTICIPANT PHONE NUMBER WITHOUT SPACES> <PARTICIPANT NAME>
bot remove <GROUPNAME> <PARTICIPANT NAME OR NUMBER>
bot send <GROUPNAME> <SOME TEXT>

Examples

bot subscribe Testgroup Steven Miller
bot addgroup Testgroup
bot add Testgroup 017912345678 Some Dude
bot send Testgroup This message should be sent!

Get started

  1. If you don’t have a Postgres instance yet, create one.
  2. If you don’t run signal-cli as DBus service yet, set it up now (see the linked documentation of signal-cli to know how to do it).
  3. Get the necessary files from here and extract them.
  4. Copy config-template.ini to config.ini and edit it so it contains the phone number(s) you want to use and the correct database credentials.
  5. Start main.py with at least Python 3.6 installed.

Code

The open source project is available here.