Metadata-Version: 2.1
Name: limbo
Version: 8.6.1
Summary: Simple and Clean Slack Chatbot
Home-page: https://github.com/llimllib/limbo
Author: Bill Mill
Author-email: bill@billmill.org
License: MIT
Keywords: slack chatbot chat limbo
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.4
License-File: LICENSE
Requires-Dist: attrs (==21.4.0)
Requires-Dist: beautifulsoup4 (==4.10.0)
Requires-Dist: certifi (==2021.10.8)
Requires-Dist: charset-normalizer (==2.0.12)
Requires-Dist: coverage (==6.3.2)
Requires-Dist: distlib (==0.3.4)
Requires-Dist: filelock (==3.6.0)
Requires-Dist: flake8 (==4.0.1)
Requires-Dist: html5lib (==1.1)
Requires-Dist: idna (==3.3)
Requires-Dist: importlib-metadata (==4.2.0)
Requires-Dist: iniconfig (==1.1.1)
Requires-Dist: mccabe (==0.6.1)
Requires-Dist: multidict (==6.0.2)
Requires-Dist: packaging (==21.3)
Requires-Dist: platformdirs (==2.5.1)
Requires-Dist: pluggy (==1.0.0)
Requires-Dist: py (==1.11.0)
Requires-Dist: pycodestyle (==2.8.0)
Requires-Dist: pyfiglet (==0.8.post1)
Requires-Dist: pyflakes (==2.4.0)
Requires-Dist: pyparsing (==3.0.7)
Requires-Dist: pytest (==7.0.1)
Requires-Dist: pytest-cov (==3.0.0)
Requires-Dist: PyYAML (==6.0)
Requires-Dist: requests (==2.27.1)
Requires-Dist: six (==1.16.0)
Requires-Dist: soupsieve (==2.3.1)
Requires-Dist: toml (==0.10.2)
Requires-Dist: tomli (==2.0.1)
Requires-Dist: tox (==3.24.5)
Requires-Dist: typing-extensions (==4.1.1)
Requires-Dist: urllib3 (==1.26.8)
Requires-Dist: vcrpy (==4.1.1)
Requires-Dist: virtualenv (==20.13.1)
Requires-Dist: webencodings (==0.5.1)
Requires-Dist: websocket-client (==1.2.3)
Requires-Dist: wrapt (==1.13.3)
Requires-Dist: yarl (==1.7.2)
Requires-Dist: zipp (==3.7.0)

Limbo
=====

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

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

Status
------

At the moment, I consider limbo to be feature complete, and the project
is in maintenance mode. Every once in a while I come in and update the
dependencies.

Contributions will be considered and may be accepted, you may want to
`email me <bill@billmill.org>`__ because I might not notice your PR.

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

I recommend that you always run limbo in a
`virtualenv <http://docs.python-guide.org/en/latest/dev/virtualenvs/>`__
so that you are running in a clean environment.

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).
-  ``--version``, ``-v``: Print a version number and exit

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

Note that if you are getting an error message about not seeing
environment variables, you may be running limbo as ``sudo``, which will
clear the environment. Use a virtualenv and always run limbo as a user
process!

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>`__
-  `poll <https://github.com/llimllib/limbo/wiki/Poll-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>`__
-  `@eSoares <https://github.com/eSoares>`__
-  `@sweinstein89 <https://github.com/sweinstein89>`__
-  `@fenwar <https://github.com/fenwar>`__
-  `@rdimartino <https://github.com/rdimartino>`__


