A library that allows communication via the Signal IM service using the signald daemon.
Project description
pysignald
pysignald is a Python client for the excellent 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:
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:
from signald import Signal
s = Signal("+1234567890")
@s.chat_handler("hello there", order=10) # This is case-insensitive.
def hello_there(message, match):
# Returning `False` as the first argument will cause matching to continue
# after this handler runs.
stop = False
reply = "Hello there!"
return stop, reply
# Matching is case-insensitive. The `order` argument signifies when
# the handler will try to match (default is 100), and functions get sorted
# by order of declaration secondly.
@s.chat_handler("hello", order=10)
def hello(message, match):
# This will match on "hello there" as well because of the "stop" return code in
# the function above. Both replies will be sent.
return "Hello!"
@s.chat_handler(re.compile("my name is (.*)")) # This is case-sensitive.
def name(message, match):
return "Hello %s." % match.group(1)
@s.chat_handler("")
def catch_all(message, match):
# This will only be sent if nothing else matches, because matching
# stops by default on the first function that matches.
return "I don't know what you said."
s.run_chat()
Various
pysignald also supports different socket paths:
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:
$ socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/var/run/signald/signald.sock
Then in pysignald:
s = Signal("+1234567890", socket_path=("your.serveri.ip", 15432))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pysignald-0.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c78ed8cc3d7202d9a9cf8b1c62b6ccb250e324b70d93eb990d6e8b83ce6b755 |
|
MD5 | c6886c7a33c32aa9f385377a762b1e0d |
|
BLAKE2b-256 | 2a9526c5a4dc56d5a8ad363a6104a3ff8d0c8b3708eb201ab58a11b74856dca7 |