Go to file
2019-09-11 20:17:47 +00:00
bwb Stop logging decryption errors 2019-09-11 20:17:47 +00:00
.gitignore Initial commit 2019-09-06 01:56:11 -06:00
build-upload.sh Add README and build script 2019-09-10 02:32:11 +00:00
license.txt Initial commit 2019-09-06 01:56:11 -06:00
README.md Support multi-bot secure key exchange 2019-09-11 04:31:44 +00:00
setup.py Stop logging decryption errors 2019-09-11 20:17:47 +00:00

bwb

bot with bot.

Usage

Install with pip install --upgrade bwb.

# Import one of:
from bwb.tanner import bwb
from bwb.jason import bwb
from bwb.tdev import bwb
from bwb.molly import bwb

Handshaking

Boot up:

client.send_message(BOT_WITH_BOT, '000000init ' + bwb.init())

On 000000init [data]:

client.send_message(BOT_WITH_BOT, '000000handshake ' + bwb.handshake(data))

On 000000handshake [data]:

client.send_message(BOT_WITH_BOT, bwb.wrap('secret ' + bwb.secret(data)))
bwb.set_otp(bwb.init_secret)

On OTP authed 123456secret [data]:

bwb.set_secret(data)
client.send_message(BOT_WITH_BOT, bwb.wrap('🤝'))

On OTP authed 123456🤝:

client.send_message(BOT_WITH_BOT, '🤝')

Interaction

Run every incoming message through bwb.parse() since it's inexpensive. This will decrypt and remove base58 encoding.

Once decoded, send it through bwb.check_auth() which will return True or False if the code is valid.

Example:

text = bwb.parse(text)
if text.startswith('!'):
    ...
elif text.startswith('000000'):
    text = text[6:]
elif bwb.check_auth(text):
    authed = True
    text = text[6:]
else:
    return

Use bwb.wrap() to auth and encode outgoing commands.

Params:

wrap(text, target=None, b58=False, enc=False)

Examples:

out = bwb.wrap('ping')  # broadcast all bots
out = bwb.wrap('ping', target=TANNER)  # auth for Tannerbot
out = bwb.wrap('ping', target=JASON, enc=True)  # base58 encrypt
out = bwb.wrap('ping', target=MOLLY, b58=True)  # base58

Development

Setup

Clone the repo.

To test your changes:

pip install --upgrade ~/path/to/bwb

Deployment

Install setuptools:

python3 -m pip install --user --upgrade setuptools wheel
  • Increment version number in setup.py

Build and upload:

bash build-upload.sh