Skip to main content

A bot that is also a responsive shell

Project description

https://readthedocs.org/projects/shellbot-for-cisco-spark/badge/?version=latest https://img.shields.io/pypi/v/shellbot.svg https://img.shields.io/travis/bernard357/shellbot.svg https://img.shields.io/badge/coverage-93%25-green.svg https://img.shields.io/pypi/pyversions/shellbot.svg?maxAge=2592000 https://img.shields.io/badge/License-Apache%202.0-blue.svg

Fast, simple and lightweight micro bot-framework for Python.

Features

  • Comprehensive set of examples is included

  • Create powerful state machines for mastering bot-human interactions

  • Create the exact set of shell commands needed for your application

  • Either respond interactively, or pipeline long-lasting commands

  • Audit dynamically chat interactions

  • Native support of Cisco Spark

  • Local disconnected mode of operation for development and tests

  • Bottle is included for easy interactions over the web

  • Test coverage exceeds 90%

  • Made for python 2.7 and for python 3.x

  • Documentation: Shellbot at ReadTheDocs

  • Python package: Shellbot at PyPi

  • Source code: Shellbot at GitHub

  • Free software: Apache License (2.0)

The Batman example

from shellbot import ShellBot, Context, Command

# create a bot and load commands
#

class Batman(Command):
    keyword = 'whoareyou'
    information_message = u"I'm Batman!"

class Batcave(Command):
    keyword = 'cave'
    information_message = u"The Batcave is silent..."

    def execute(self, arguments=None):
        if arguments:
            self.bot.say(u"The Batcave echoes, '{0}'".format(arguments))
        else:
            self.bot.say(self.information_message)

class Batsignal(Command):
    keyword = 'signal'
    information_message = u"NANA NANA NANA NANA"
    information_file = "https://upload.wikimedia.org/wikipedia/en/c/c6/Bat-signal_1989_film.jpg"

    def execute(self, arguments=None):
        self.bot.say(self.information_message,
                     file=self.information_file)

class Batsuicide(Command):
    keyword = 'suicide'
    information_message = u"Go back to Hell"
    is_interactive = False

    def execute(self, arguments=None):
        time.sleep(3)
        self.bot.say(self.information_message)
        self.bot.stop()


bot = ShellBot(commands=[Batman(), Batcave(), Batsignal(), Batsuicide()])

# load configuration
#
os.environ['BOT_ON_START'] = 'You can now chat with Batman'
os.environ['BOT_ON_STOP'] = 'Batman is now quitting the room, bye'
os.environ['CHAT_ROOM_TITLE'] = 'Chat with Batman'
bot.configure()

# initialise a chat room
#
bot.bond(reset=True)

# run the bot
#
bot.run()

# delete the chat room when the bot is stopped
#
bot.dispose()

Quick installation

To install the shellbot package, type:

$ pip install shellbot

Or, if you prefer to download the full project including examples and documentation, and install it, do the following:

$ git clone https://github.com/bernard357/shellbot.git
$ cd shellbot
$ pip install -e .

Credits

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shellbot-17.5.28.tar.gz (138.7 kB view details)

Uploaded Source

Built Distribution

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

shellbot-17.5.28-py2.py3-none-any.whl (85.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file shellbot-17.5.28.tar.gz.

File metadata

  • Download URL: shellbot-17.5.28.tar.gz
  • Upload date:
  • Size: 138.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for shellbot-17.5.28.tar.gz
Algorithm Hash digest
SHA256 f292593bed053479e538c91fce3d8b6f1a36b37b66bf48f594b985525323f4ea
MD5 4429e61712249827da2bcb46c153dded
BLAKE2b-256 ef64af2901c6664756f79b856d4869cc1e1f4711b32039e9bad27353d38699bf

See more details on using hashes here.

File details

Details for the file shellbot-17.5.28-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for shellbot-17.5.28-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ce397b812afda52564290516ae9335fdc0059ad1dbe3ad6f4a72006ad50da8d9
MD5 e2fdb99477a0248a0d475a26050a4a17
BLAKE2b-256 a116911d2929bba8e2f8cb6beeb338d9f191bc70fb88e616407f1cb3e25acd7c

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