Skip to main content

A Pythonic interface to Ringing Room, an online change ringing platform.

Project description

BellTower

A super-simple Python library for interacting with Ringing Room.

This library is quite W.I.P., and its development is mostly driven by its potential use in Wheatley and other (as of yet unreleased) projects of mine. The library seems to be quite stable, but the API could change at any moment whilst I'm developing it.

If you have any queries, then please leave an issue. Pull requests are very welcome, but if you are making any large-scale changes then it may be worth suggesting them in an issue first.

Get Started

Quickstart and documentation are both here, and examples can be found in the examples folder.

Why use this simple library?

  • Simple libraries are just nicer to use!
  • No knowledge of Ringing Room internals is needed to do cool things with Ringing Room.
  • If the internals of Ringing Room change (which they have done), then fixing those breakages is as simple as changing to the newest version of BellTower.
  • This library doesn't have to be specific to Ringing Room (though Ringing Room is far and away the most popular online ringing platform, so for the time being it is the only supported platform).

Example: A simple chatbot

A chatbot which, whenever anyone says Hello in the chat, replies with Hello, <username>.

More examples can be found in the examples folder, with this example at examples/chatbot.py:

# Import the tower class, and 'time.sleep'
from time import sleep
from belltower import RingingRoomTower

# Create a new tower, and tell it to join tower ID 765432918
tower = RingingRoomTower(765432918)

# Register a function to be called when a chat message is posted
@tower.on_chat
def on_chat(user, message):
    print(f"{user} says '{message}'")
    # If the message is 'hello' in any capitalisation, send 'Hello <user>'.
    # The first argument is the name to put next to the chat message
    if message.lower() == "hello":
        tower.chat("RR ChatBot", f"Hello, {user}!")

# The 'with' block makes sure that 'tower' has a chance to gracefully shut
# down the connection if the program crashes
with tower:
    # Wait until the tower is loaded
    tower.wait_loaded()
    # Go into an infinite loop.  It doesn't matter what the main thread does,
    # but if it leaves the `with` block then the Tower's connection will
    # close and become unusable
    while True:
        sleep(1000)

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

belltower-0.1.0b1.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

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

belltower-0.1.0b1-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file belltower-0.1.0b1.tar.gz.

File metadata

  • Download URL: belltower-0.1.0b1.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.5

File hashes

Hashes for belltower-0.1.0b1.tar.gz
Algorithm Hash digest
SHA256 59210e3b5a1337aa11775a3f62eb3896d4b27cefe9270da93a7b852c4ebdd990
MD5 52c6ba5d86a52b9ec52bbea073ee116d
BLAKE2b-256 2f1e53044776aafd78cf8e749d03bd50f10e815394891d055e87f1fea326a9d4

See more details on using hashes here.

File details

Details for the file belltower-0.1.0b1-py3-none-any.whl.

File metadata

  • Download URL: belltower-0.1.0b1-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.5

File hashes

Hashes for belltower-0.1.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 35ba067f3cb317ac5415e7810f56aac949218e6b4cc63c8f6a09cb82b5479642
MD5 c956f5ce9ddcf6135fd0cda58ebc4531
BLAKE2b-256 c3037f1d6876b4862d4e2629e0910faffdf7c05e873bdc8ac7a6eff4571450d6

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