Limbo
=====
A `Slack <https://slack.com/>`__ chatbot
----------------------------------------
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.
Python Versions
---------------
At the moment, this software only officially supports python >=3.10,
because the test fixtures fail on older versions of python due to an
urllib3 inconsistency I don’t understand.
It should still run on other versions of python, but for the moment
they’re unfortunately not tested.
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:
- `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>`__
- `weather <https://github.com/llimllib/limbo/wiki/Weather-Plugin>`__
- `wiki <https://github.com/llimllib/limbo/wiki/Wiki-Plugin>`__
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>`__
Raw data
{
"_id": null,
"home_page": "https://github.com/llimllib/limbo",
"name": "limbo",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.4",
"maintainer_email": "",
"keywords": "slack chatbot chat limbo",
"author": "Bill Mill",
"author_email": "bill@billmill.org",
"download_url": "https://files.pythonhosted.org/packages/f5/1f/7ab1a1d31fe801b2e4410b8d8a944c84d01852aadb6565fd0e0d8cebf149/limbo-9.1.0.tar.gz",
"platform": null,
"description": "Limbo\n=====\n\nA `Slack <https://slack.com/>`__ chatbot\n----------------------------------------\n\nStatus\n------\n\nAt the moment, I consider limbo to be feature complete, and the project\nis in maintenance mode. Every once in a while I come in and update the\ndependencies.\n\nContributions will be considered and may be accepted, you may want to\n`email me <bill@billmill.org>`__ because I might not notice your PR.\n\nPython Versions\n---------------\n\nAt the moment, this software only officially supports python >=3.10,\nbecause the test fixtures fail on older versions of python due to an\nurllib3 inconsistency I don\u2019t understand.\n\nIt should still run on other versions of python, but for the moment\nthey\u2019re unfortunately not tested.\n\nInstallation\n------------\n\n1. Clone the repo\n2. `Create a bot user <https://my.slack.com/services/new/bot>`__ if you\n don\u2019t have one yet, and copy the API Token\n3. export SLACK_TOKEN=\u201cyour-api-token\u201d\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\nI recommend that you always run limbo in a\n`virtualenv <http://docs.python-guide.org/en/latest/dev/virtualenvs/>`__\nso that you are running in a clean environment.\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 \u201cmessage\u201d).\n- ``-c``: Run a single command.\n- ``--database``, ``-d``: Where to store the limbo sqlite3 database.\n Defaults to limbo.sqlite3.\n- ``--pluginpath``, ``-pp``: The path where limbo should look to find\n its plugins (defaults to /plugins).\n- ``--version``, ``-v``: Print a version number and exit\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 to\n loading all plugins in the plugins directory (which defaults to\n \u201climbo/plugins\u201d)\n\nNote that if you are getting an error message about not seeing\nenvironment variables, you may be running limbo as ``sudo``, which will\nclear the environment. Use a virtualenv and always run limbo as a user\nprocess!\n\nCommands\n--------\n\nIt\u2019s 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\u2019t 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- `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- `poll <https://github.com/llimllib/limbo/wiki/Poll-Plugin>`__\n- `weather <https://github.com/llimllib/limbo/wiki/Weather-Plugin>`__\n- `wiki <https://github.com/llimllib/limbo/wiki/Wiki-Plugin>`__\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- `@eSoares <https://github.com/eSoares>`__\n- `@sweinstein89 <https://github.com/sweinstein89>`__\n- `@fenwar <https://github.com/fenwar>`__\n- `@rdimartino <https://github.com/rdimartino>`__\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Simple and Clean Slack Chatbot",
"version": "9.1.0",
"project_urls": {
"Homepage": "https://github.com/llimllib/limbo"
},
"split_keywords": [
"slack",
"chatbot",
"chat",
"limbo"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a7416f00abe97531524a48d57dc9e8909230791040a67a98e6701e58b6ee1586",
"md5": "3709b0016df4ecb229a4127f7966165e",
"sha256": "0e889b45b1935ed196c452c7f498e185a4fabd59294d45e81cdbe0169ef25b9e"
},
"downloads": -1,
"filename": "limbo-9.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3709b0016df4ecb229a4127f7966165e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 42958,
"upload_time": "2024-03-09T23:26:30",
"upload_time_iso_8601": "2024-03-09T23:26:30.555522Z",
"url": "https://files.pythonhosted.org/packages/a7/41/6f00abe97531524a48d57dc9e8909230791040a67a98e6701e58b6ee1586/limbo-9.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f51f7ab1a1d31fe801b2e4410b8d8a944c84d01852aadb6565fd0e0d8cebf149",
"md5": "d94ea6300e737bb27836f8e8720def6f",
"sha256": "f8d162964754f1def407a28f1133e1c7203c996b43307173bee6e66a6a77b1e0"
},
"downloads": -1,
"filename": "limbo-9.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d94ea6300e737bb27836f8e8720def6f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 39727,
"upload_time": "2024-03-09T23:26:32",
"upload_time_iso_8601": "2024-03-09T23:26:32.816577Z",
"url": "https://files.pythonhosted.org/packages/f5/1f/7ab1a1d31fe801b2e4410b8d8a944c84d01852aadb6565fd0e0d8cebf149/limbo-9.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-09 23:26:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "llimllib",
"github_project": "limbo",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "limbo"
}