pysignald ======= [![pipeline status](https://gitlab.com/stavros/pysignald/badges/master/pipeline.svg)](https://gitlab.com/stavros/pysignald/commits/master) pysignald is a Python client for the excellent [signald](https://git.callpipe.com/finn/signald) project, which in turn is a command-line client for the Signal messaging service. pysignald allows you to programmatically send and receive messages to Signal. Installation ------------ You can install pysignald with pip: ``` $ pip install pysignald ``` Running ------- Just make sure you have signald installed. Here's an example of how to use pysignald: ```python from signald import Signal s = Signal("+1234567890") # If you haven't registered/verified signald, do that first: s.register(voice=False) s.verify("sms code") s.send_message("+1098765432", "Hello there!") for message in s.receive_messages(): print(message) ``` You can also use the chat decorator interface: ```python from signald import Signal s = Signal("+1234567890") @s.chat_handler("hello") # This is case-insensitive. def hello(message, match): return "Hello there!" @s.chat_handler(re.compile("my name is (.*)")) # This is case-sensitive. def name(message, match): return "Hello %s." % match.group(1) s.run_chat() ``` Various ------- pysignald also supports different socket paths: ```python s = Signal("+1234567890", socket_path="/var/some/other/socket.sock") ``` It supports TCP sockets too, if you run a proxy. For example, you can proxy signald's UNIX socket over TCP with socat: ```bash $ socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/var/run/signald/signald.sock ``` Then in pysignald: ```python s = Signal("+1234567890", socket_path=("your.serveri.ip", 15432)) ```