limbo


Namelimbo JSON
Version 6.0.1 PyPI version JSON
download
home_pagehttps://github.com/llimllib/limbo
SummarySimple and Clean Slack Chatbot
upload_time2017-10-12 15:53:31
maintainer
docs_urlNone
authorBill Mill
requires_python
licenseMIT
keywords slack chatbot chat limbo
VCS
bugtrack_url
requirements asn1crypto beautifulsoup4 certifi cffi chardet configparser contextlib2 coverage cryptography enum34 flake8 funcsigs html5lib idna ipaddress mccabe mock pbr pluggy py pycodestyle pycparser pyfiglet pyflakes pyOpenSSL pytest pytest-cov PyYAML requests six tox urllib3 vcrpy virtualenv webencodings websocket-client wrapt
Travis-CI
coveralls test coverage No coveralls.
            Limbo
=====

A `Slack <https://slack.com/>`__ chatbot
----------------------------------------

.. figure:: https://travis-ci.org/llimllib/limbo.svg?branch=master
   :alt: 

Installation
------------

1. Clone the repo
2. `Create a bot user <https://my.slack.com/services/new/bot>`__ if you
   don't have one yet, and copy the API Token
3. export SLACK\_TOKEN="your-api-token"
4. ``make run`` (or ``make repl`` for local testing)
5. Invite Limbo into any channels you want it in, or just message it in
   #general. Try typing ``!gif dubstep cat`` to test it out

.. figure:: http://i.imgur.com/xhmD6QO.png
   :alt: kitten mittens

   kitten mittens

Command Arguments
-----------------

-  --test, -t: Enter command line mode to enter a limbo repl.
-  --hook: Specify the hook to test. (Defaults to "message").
-  -c: Run a single command.
-  --database, -d: Where to store the limbo sqlite3 database. Defaults
   to limbo.sqlite3.
-  --pluginpath, -pp: The path where limbo should look to find its
   plugins (defaults to /plugins).

Environment Variables
---------------------

-  SLACK\_TOKEN: Slack API token. Required.
-  LIMBO\_LOGLEVEL: The logging level. Defaults to INFO.
-  LIMBO\_LOGFILE: File to log info to. Defaults to none.
-  LIMBO\_LOGFORMAT: Format for log messages. Defaults to
   ``%(asctime)s:%(levelname)s:%(name)s:%(message)s``.
-  LIMBO\_PLUGINS: Comma-delimited string of plugins to load. Defaults
   to loading all plugins in the plugins directory (which defaults to
   "limbo/plugins")

Commands
--------

It's super easy to add your own commands! Just create a python file in
the plugins directory with an ``on_message`` function that returns a
string.

You can use the ``!help`` command to print out all available commands
and a brief help message about them. ``!help <plugin>`` will return just
the help for a particular plugin.

By default, plugins won't react to messages from other bots (just
messages from humans). Define an ``on_bot_message`` function to handle
bot messages too. See the example plugins for an easy way to define
these functions.

These are the current default plugins:

-  `calc <https://github.com/llimllib/limbo/wiki/Calc-Plugin>`__
-  `emoji <https://github.com/llimllib/limbo/wiki/Emoji-Plugin>`__
-  `flip <https://github.com/llimllib/limbo/wiki/Flip-Plugin>`__
-  `gif <https://github.com/llimllib/limbo/wiki/Gif-Plugin>`__
-  `google <https://github.com/llimllib/limbo/wiki/Google-Plugin>`__
-  `help <https://github.com/llimllib/limbo/wiki/Help-Plugin>`__
-  `image <https://github.com/llimllib/limbo/wiki/Image-Plugin>`__
-  `map <https://github.com/llimllib/limbo/wiki/Map-Plugin>`__
-  `stock <https://github.com/llimllib/limbo/wiki/Stock-Plugin>`__
-  `stockphoto <https://github.com/llimllib/limbo/wiki/Stock-Photo-Plugin>`__
-  `weather <https://github.com/llimllib/limbo/wiki/Weather-Plugin>`__
-  `wiki <https://github.com/llimllib/limbo/wiki/Wiki-Plugin>`__
-  `youtube <https://github.com/llimllib/limbo/wiki/Youtube-Plugin>`__

Docker
------

-  How do I try out Limbo via docker?

   -  @PeterGrace maintains a public build of limbo, available from the
      docker registry. Executing ``make docker_run`` will start the
      default bot.
   -  ``make docker_stop`` will stop the bot

-  When I start the docker container, I see an error about unable to
   source limbo.env. Is this a problem?

   -  No. The limbo.env file only exists when using Kubernetes with the
      included opaque secret recipe for storing your environment
      variables.

-  I'd like to develop plugins for Limbo, but would still like to use
   Docker to run the bot. Is there a quick way to add plugins to the
   bot?

   -  Yes! Use the included Dockerfile.dev as a template, and simply
      build via ``make docker_build`` You'll then need to start the bot
      with your new\_image\_name, for example
      ``docker run -d -e SLACK_TOKEN=<your_token> new_image_name``

Contributors
------------

-  [@fsalum](https://github.com/fsalum)
-  [@rodvodka](https://github.com/rodvodka)
-  [@mattfora](https://github.com/mattfora)
-  [@dguido](https://github.com/dguido)
-  [@JoeGermuska](https://github.com/JoeGermuska)
-  [@MathyV](https://github.com/MathyV)
-  [@stopspazzing](https://github.com/stopspazzing)
-  [@noise](https://github.com/noise)
-  [@drewp](https://github.com/drewp)
-  [@TetraEtc](https://github.com/TetraEtc)
-  [@LivingInSyn](https://github.com/LivingInSyn)
-  [@reversegremlin](https://github.com/reversegremlin)
-  [@adamghill](https://github.com/adamghill)
-  [@PeterGrace](https://github.com/PeterGrace)
-  [@SkiftCreative](https://github.com/SkiftCreative)
-  [@diceone](https://github.com/diceone)
-  [@rnagle](https://github.com/rnagle)
-  [@topher200](https://github.com/topher200)
-  [@StewPoll](https://github.com/StewPoll)

            

Raw data

            {
    "maintainer": "", 
    "docs_url": null, 
    "requires_python": "", 
    "maintainer_email": "", 
    "cheesecake_code_kwalitee_id": null, 
    "keywords": "slack chatbot chat limbo", 
    "upload_time": "2017-10-12 15:53:31", 
    "requirements": [
        {
            "name": "asn1crypto", 
            "specs": [
                [
                    "==", 
                    "0.22.0"
                ]
            ]
        }, 
        {
            "name": "beautifulsoup4", 
            "specs": [
                [
                    "==", 
                    "4.6.0"
                ]
            ]
        }, 
        {
            "name": "certifi", 
            "specs": [
                [
                    "==", 
                    "2017.4.17"
                ]
            ]
        }, 
        {
            "name": "cffi", 
            "specs": [
                [
                    "==", 
                    "1.10.0"
                ]
            ]
        }, 
        {
            "name": "chardet", 
            "specs": [
                [
                    "==", 
                    "3.0.4"
                ]
            ]
        }, 
        {
            "name": "configparser", 
            "specs": [
                [
                    "==", 
                    "3.5.0"
                ]
            ]
        }, 
        {
            "name": "contextlib2", 
            "specs": [
                [
                    "==", 
                    "0.5.5"
                ]
            ]
        }, 
        {
            "name": "coverage", 
            "specs": [
                [
                    "==", 
                    "4.4.1"
                ]
            ]
        }, 
        {
            "name": "cryptography", 
            "specs": [
                [
                    "==", 
                    "1.9"
                ]
            ]
        }, 
        {
            "name": "enum34", 
            "specs": [
                [
                    "==", 
                    "1.1.6"
                ]
            ]
        }, 
        {
            "name": "flake8", 
            "specs": [
                [
                    "==", 
                    "3.3.0"
                ]
            ]
        }, 
        {
            "name": "funcsigs", 
            "specs": [
                [
                    "==", 
                    "1.0.2"
                ]
            ]
        }, 
        {
            "name": "html5lib", 
            "specs": [
                [
                    "==", 
                    "0.999999999"
                ]
            ]
        }, 
        {
            "name": "idna", 
            "specs": [
                [
                    "==", 
                    "2.5"
                ]
            ]
        }, 
        {
            "name": "ipaddress", 
            "specs": [
                [
                    "==", 
                    "1.0.18"
                ]
            ]
        }, 
        {
            "name": "mccabe", 
            "specs": [
                [
                    "==", 
                    "0.6.1"
                ]
            ]
        }, 
        {
            "name": "mock", 
            "specs": [
                [
                    "==", 
                    "2.0.0"
                ]
            ]
        }, 
        {
            "name": "pbr", 
            "specs": [
                [
                    "==", 
                    "3.1.0"
                ]
            ]
        }, 
        {
            "name": "pluggy", 
            "specs": [
                [
                    "==", 
                    "0.4.0"
                ]
            ]
        }, 
        {
            "name": "py", 
            "specs": [
                [
                    "==", 
                    "1.4.34"
                ]
            ]
        }, 
        {
            "name": "pycodestyle", 
            "specs": [
                [
                    "==", 
                    "2.3.1"
                ]
            ]
        }, 
        {
            "name": "pycparser", 
            "specs": [
                [
                    "==", 
                    "2.17"
                ]
            ]
        }, 
        {
            "name": "pyfiglet", 
            "specs": [
                [
                    "==", 
                    "0.7.5"
                ]
            ]
        }, 
        {
            "name": "pyflakes", 
            "specs": [
                [
                    "==", 
                    "1.5.0"
                ]
            ]
        }, 
        {
            "name": "pyOpenSSL", 
            "specs": [
                [
                    "==", 
                    "17.0.0"
                ]
            ]
        }, 
        {
            "name": "pytest", 
            "specs": [
                [
                    "==", 
                    "3.1.2"
                ]
            ]
        }, 
        {
            "name": "pytest-cov", 
            "specs": [
                [
                    "==", 
                    "2.5.1"
                ]
            ]
        }, 
        {
            "name": "PyYAML", 
            "specs": [
                [
                    "==", 
                    "3.12"
                ]
            ]
        }, 
        {
            "name": "requests", 
            "specs": [
                [
                    "==", 
                    "2.18.1"
                ]
            ]
        }, 
        {
            "name": "six", 
            "specs": [
                [
                    "==", 
                    "1.10.0"
                ]
            ]
        }, 
        {
            "name": "tox", 
            "specs": [
                [
                    "==", 
                    "2.7.0"
                ]
            ]
        }, 
        {
            "name": "urllib3", 
            "specs": [
                [
                    "==", 
                    "1.21.1"
                ]
            ]
        }, 
        {
            "name": "vcrpy", 
            "specs": [
                [
                    "==", 
                    "1.11.1"
                ]
            ]
        }, 
        {
            "name": "virtualenv", 
            "specs": [
                [
                    "==", 
                    "15.1.0"
                ]
            ]
        }, 
        {
            "name": "webencodings", 
            "specs": [
                [
                    "==", 
                    "0.5.1"
                ]
            ]
        }, 
        {
            "name": "websocket-client", 
            "specs": [
                [
                    "==", 
                    "0.44.0"
                ]
            ]
        }, 
        {
            "name": "wrapt", 
            "specs": [
                [
                    "==", 
                    "1.10.10"
                ]
            ]
        }
    ], 
    "author": "Bill Mill", 
    "home_page": "https://github.com/llimllib/limbo", 
    "github_user": "llimllib", 
    "download_url": "https://pypi.python.org/packages/98/59/ccf9b0e43ed3836f433400172b327cc764aebbc410d1dfc0d81f8197de78/limbo-6.0.1.tar.gz", 
    "platform": "", 
    "version": "6.0.1", 
    "cheesecake_documentation_id": null, 
    "description": "Limbo\n=====\n\nA `Slack <https://slack.com/>`__ chatbot\n----------------------------------------\n\n.. figure:: https://travis-ci.org/llimllib/limbo.svg?branch=master\n   :alt: \n\nInstallation\n------------\n\n1. Clone the repo\n2. `Create a bot user <https://my.slack.com/services/new/bot>`__ if you\n   don't have one yet, and copy the API Token\n3. export SLACK\\_TOKEN=\"your-api-token\"\n4. ``make run`` (or ``make repl`` for local testing)\n5. Invite Limbo into any channels you want it in, or just message it in\n   #general. Try typing ``!gif dubstep cat`` to test it out\n\n.. figure:: http://i.imgur.com/xhmD6QO.png\n   :alt: kitten mittens\n\n   kitten mittens\n\nCommand Arguments\n-----------------\n\n-  --test, -t: Enter command line mode to enter a limbo repl.\n-  --hook: Specify the hook to test. (Defaults to \"message\").\n-  -c: Run a single command.\n-  --database, -d: Where to store the limbo sqlite3 database. Defaults\n   to limbo.sqlite3.\n-  --pluginpath, -pp: The path where limbo should look to find its\n   plugins (defaults to /plugins).\n\nEnvironment Variables\n---------------------\n\n-  SLACK\\_TOKEN: Slack API token. Required.\n-  LIMBO\\_LOGLEVEL: The logging level. Defaults to INFO.\n-  LIMBO\\_LOGFILE: File to log info to. Defaults to none.\n-  LIMBO\\_LOGFORMAT: Format for log messages. Defaults to\n   ``%(asctime)s:%(levelname)s:%(name)s:%(message)s``.\n-  LIMBO\\_PLUGINS: Comma-delimited string of plugins to load. Defaults\n   to loading all plugins in the plugins directory (which defaults to\n   \"limbo/plugins\")\n\nCommands\n--------\n\nIt's super easy to add your own commands! Just create a python file in\nthe plugins directory with an ``on_message`` function that returns a\nstring.\n\nYou can use the ``!help`` command to print out all available commands\nand a brief help message about them. ``!help <plugin>`` will return just\nthe help for a particular plugin.\n\nBy default, plugins won't react to messages from other bots (just\nmessages from humans). Define an ``on_bot_message`` function to handle\nbot messages too. See the example plugins for an easy way to define\nthese functions.\n\nThese are the current default plugins:\n\n-  `calc <https://github.com/llimllib/limbo/wiki/Calc-Plugin>`__\n-  `emoji <https://github.com/llimllib/limbo/wiki/Emoji-Plugin>`__\n-  `flip <https://github.com/llimllib/limbo/wiki/Flip-Plugin>`__\n-  `gif <https://github.com/llimllib/limbo/wiki/Gif-Plugin>`__\n-  `google <https://github.com/llimllib/limbo/wiki/Google-Plugin>`__\n-  `help <https://github.com/llimllib/limbo/wiki/Help-Plugin>`__\n-  `image <https://github.com/llimllib/limbo/wiki/Image-Plugin>`__\n-  `map <https://github.com/llimllib/limbo/wiki/Map-Plugin>`__\n-  `stock <https://github.com/llimllib/limbo/wiki/Stock-Plugin>`__\n-  `stockphoto <https://github.com/llimllib/limbo/wiki/Stock-Photo-Plugin>`__\n-  `weather <https://github.com/llimllib/limbo/wiki/Weather-Plugin>`__\n-  `wiki <https://github.com/llimllib/limbo/wiki/Wiki-Plugin>`__\n-  `youtube <https://github.com/llimllib/limbo/wiki/Youtube-Plugin>`__\n\nDocker\n------\n\n-  How do I try out Limbo via docker?\n\n   -  @PeterGrace maintains a public build of limbo, available from the\n      docker registry. Executing ``make docker_run`` will start the\n      default bot.\n   -  ``make docker_stop`` will stop the bot\n\n-  When I start the docker container, I see an error about unable to\n   source limbo.env. Is this a problem?\n\n   -  No. The limbo.env file only exists when using Kubernetes with the\n      included opaque secret recipe for storing your environment\n      variables.\n\n-  I'd like to develop plugins for Limbo, but would still like to use\n   Docker to run the bot. Is there a quick way to add plugins to the\n   bot?\n\n   -  Yes! Use the included Dockerfile.dev as a template, and simply\n      build via ``make docker_build`` You'll then need to start the bot\n      with your new\\_image\\_name, for example\n      ``docker run -d -e SLACK_TOKEN=<your_token> new_image_name``\n\nContributors\n------------\n\n-  [@fsalum](https://github.com/fsalum)\n-  [@rodvodka](https://github.com/rodvodka)\n-  [@mattfora](https://github.com/mattfora)\n-  [@dguido](https://github.com/dguido)\n-  [@JoeGermuska](https://github.com/JoeGermuska)\n-  [@MathyV](https://github.com/MathyV)\n-  [@stopspazzing](https://github.com/stopspazzing)\n-  [@noise](https://github.com/noise)\n-  [@drewp](https://github.com/drewp)\n-  [@TetraEtc](https://github.com/TetraEtc)\n-  [@LivingInSyn](https://github.com/LivingInSyn)\n-  [@reversegremlin](https://github.com/reversegremlin)\n-  [@adamghill](https://github.com/adamghill)\n-  [@PeterGrace](https://github.com/PeterGrace)\n-  [@SkiftCreative](https://github.com/SkiftCreative)\n-  [@diceone](https://github.com/diceone)\n-  [@rnagle](https://github.com/rnagle)\n-  [@topher200](https://github.com/topher200)\n-  [@StewPoll](https://github.com/StewPoll)\n", 
    "tox": true, 
    "lcname": "limbo", 
    "bugtrack_url": null, 
    "github": true, 
    "coveralls": false, 
    "name": "limbo", 
    "license": "MIT", 
    "travis_ci": true, 
    "github_project": "limbo", 
    "summary": "Simple and Clean Slack Chatbot", 
    "split_keywords": [
        "slack", 
        "chatbot", 
        "chat", 
        "limbo"
    ], 
    "author_email": "bill@billmill.org", 
    "urls": [
        {
            "has_sig": false, 
            "upload_time": "2017-10-12T15:53:31", 
            "comment_text": "", 
            "python_version": "source", 
            "url": "https://pypi.python.org/packages/98/59/ccf9b0e43ed3836f433400172b327cc764aebbc410d1dfc0d81f8197de78/limbo-6.0.1.tar.gz", 
            "md5_digest": "00593063697e552ef0839e9fef625887", 
            "downloads": 0, 
            "filename": "limbo-6.0.1.tar.gz", 
            "packagetype": "sdist", 
            "path": "98/59/ccf9b0e43ed3836f433400172b327cc764aebbc410d1dfc0d81f8197de78/limbo-6.0.1.tar.gz", 
            "size": 33132
        }
    ], 
    "_id": null, 
    "cheesecake_installability_id": null
}