Skip to main content

monitor signal chat groups and post a message when people join

Project description

Welcome Bot

A bot that monitors signal chat groups and posts a message when people join

Getting Started

Note: this is a work in progress. These setup instructions are very rough and will be evolving rapidly.

Create a local volume to hold the state of the signal-api and the welcomebot. This volume will be replaced by an encrypted volume in the cloud:

docker volume create welcomebot_state

Also create a bridge nwork that you will need later:

docker network create --driver bridge signal

Register your account with signal-api, but link the volume in a little higher in the filesystem so we can use the volume for other state sotrage as well:

docker run --detach --name signal-api --restart=always -p 8080:8080 \
      --volume welcomebot_state:/home/.local \
      --network signal \
      -e 'MODE=json-rpc' bbernhard/signal-cli-rest-api

run signal-api using that volume:

docker create network signal
docker run -d  --name signal-api --restart=always -p 9922:8080 \
     -v signal-state:/home/.local \
     --network signal \
     -e 'MODE=json-rpc' bbernhard/signal-cli-rest-api

Open the registration QR code at http://localhost:8080/v1/qrcodelink?device_name=welcome-bot And scan it with the "link account" flow from the phone with the bot account.

Note that the bot will have access to all the contacts and chats of the account you link it to. You should not use your personal Signal account for this. You should get a separate phone number, create a Signal account with that number, and then use that account only for the bot.

Replace 12125551212 with the bot's phone number and execute these commands.

curl http://localhost:8080/v1/groups/+12125551212
curl http://localhost:8080/v1/contacts/+112125551212

If you are using a fresh Signal account (you are, right?), then they should both return an empty result: [].

Send the bot account a message from the account you want it to trust as the management account. Accept that message as the bot using the phone. Then invite it to a group chat with a title you will remember, like "Welcomebot Control Room".

Rerun those curl commands above and look for the new (only!) responses.

The value WELCOME_MANAGER will be the uuid of your entry in the response to the contacts query. The value of WELCOME_CNC will be the internal_id in the response to the groups query.

Now create .env with:

SIGNAL_SERVICE=localhost:8080
PHONE_NUMBER=...
WELCOME_MANAGER=...
WELCOME_CNC=...

Then test locally with:

uv sync
uv run pytest
uv run python -m welcomebot

If you send the message "help" to the bot in the CNC channel, it should reply with a help message.

Now you should be able to run the bot in it's own container:

docker run -d --name welcomebot --restart=always  \
     -v signal-state:/home/.local \
     --env-file .env \
     --network container:signal-api \
     welcomebot

TODO: dockercompose or k8s

controlling the bot

  • send help to the bot in the CNC chat
  • invite the bot to a group you want to manage
  • send list_groups to the bot in the CNC chat
  • set the welcome mesage for the group:
set_motd 0
hello and welcome to the chat.
please adhere to group guidlines at
https://codeforamerica.org/code-of-conduct/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

welcomebot-0.1.5.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

welcomebot-0.1.5-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file welcomebot-0.1.5.tar.gz.

File metadata

  • Download URL: welcomebot-0.1.5.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for welcomebot-0.1.5.tar.gz
Algorithm Hash digest
SHA256 4de492e5eae38a21e61d16dedeb07d13ecd1bc4fe7fd6129979b8b6867be67c6
MD5 7d8174fc9bba557d2394140ee15adc0b
BLAKE2b-256 40961a9d256a80787ec52a929bc4447af6f513159962306fc4d92858b20d450b

See more details on using hashes here.

File details

Details for the file welcomebot-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: welcomebot-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for welcomebot-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0d2c1b64dbaa454108bd04b03069d4101a7cb1316bc52742fab44a7ba34aaad7
MD5 ee642341aa3a475540068c893081c158
BLAKE2b-256 8594fc2457561e791a9a8fb2814714e2e3acb2fc9d559235342849d50cc38371

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page