GithubHelp home page GithubHelp logo

kneasle / belltower Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 63 KB

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

License: MIT License

Python 100.00%
python bellringing ringing-room library

belltower's Introduction

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.