Metadata-Version: 2.0
Name: shellbot
Version: 17.6.6
Summary: A bot that is also a responsive shell
Home-page: https://github.com/bernard357/shellbot
Author: Bernard Paques
Author-email: bernard.paques@gmail.com
License: Apache License (2.0)
Keywords: bot,shell
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: No Input/Output (Daemon)
Classifier: Framework :: Bottle
Classifier: Framework :: Paste
Classifier: Framework :: Sphinx
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Communications
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Communications :: Conferencing
Classifier: Topic :: Communications :: Internet Phone
Classifier: Topic :: Communications :: Telephony
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Shells
Requires-Dist: PyYAML
Requires-Dist: bottle
Requires-Dist: ciscosparkapi
Requires-Dist: colorlog
Requires-Dist: elasticsearch
Requires-Dist: paste

========
Shellbot
========

.. image:: https://readthedocs.org/projects/shellbot-for-cisco-spark/badge/?version=latest
   :target: http://shellbot-for-cisco-spark.readthedocs.io/en/latest/?badge=latest

.. image:: https://img.shields.io/pypi/v/shellbot.svg
   :target: https://pypi.python.org/pypi/shellbot

.. image:: https://img.shields.io/travis/bernard357/shellbot.svg
   :target: https://travis-ci.org/bernard357/shellbot

.. image:: https://img.shields.io/badge/coverage-93%25-green.svg
   :target: https://img.shields.io/badge/coverage-93%25-green.svg

.. image:: https://img.shields.io/pypi/pyversions/shellbot.svg?maxAge=2592000
   :target: https://www.python.org/

.. image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
   :target: http://www.apache.org/licenses/LICENSE-2.0


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
------------------

.. code-block:: python

    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
-------

* securitybot_ from the Dropbox team
* Bottle_
* ciscosparkapi_
* PyYAML_
* Cookiecutter_
* `cookiecutter-pypackage`_

.. _securitybot: https://github.com/dropbox/securitybot
.. _`Shellbot at ReadTheDocs`: http://shellbot-for-cisco-spark.readthedocs.io/en/latest/
.. _`Shellbot at PyPi`: https://pypi.python.org/pypi/shellbot
.. _`Shellbot at GitHub`: https://github.com/bernard357/shellbot
.. _`Apache License (2.0)`: http://www.apache.org/licenses/LICENSE-2.0
.. _`Bernard Paques`: https://github.com/bernard357
.. _`Anthony Shaw`: https://github.com/tonybaloney
.. _Bottle: https://pypi.python.org/pypi/bottle
.. _ciscosparkapi: https://pypi.python.org/pypi/ciscosparkapi
.. _PyYAML: https://pypi.python.org/pypi/PyYAML
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage


