A bot for Slack
Project description
PyBites Karmabot - A Python based Slack Chatbot
A Python based Slack Chatbot for Community interaction
Features
Karmabot's main features is the management of Karma within the slack community server. You can give karma, reduce karma, check your current karma points and manage your karma related username.
https://www.youtube.com/watch?v=Yx9qYl6lmzM&t=2s
Additional commands / features are:
- Jokes powered by PyJokes
- Overview on top channels of the slack server
- Random Python tip, quote or nugget from CodeChalleng.es
- Browse and search python documentation, "pydoc help"
Installation
pip install karmabot
Basic Usage
After installing you can start karmabot by using the command
karmabot
However, you need to supply some settings prior to this.
Settings
By default we will look for a .karmabot
file in the directory you used the karmabot
command. The file should supply the following information.
KARMABOT_SLACK_USER=
KARMABOT_SLACK_TOKEN=
KARMABOT_SLACK_INVITE_USER_TOKEN=
KARMABOT_DATABASE_URL=
KARMABOT_GENERAL_CHANNEL=
KARMABOT_ADMINS=
-
KARMABOT_SLACK_USER The bot's slack user id.
-
KARMABOT_SLACK_TOKEN The auth toke for your bot
-
KARMABOT_SLACK_INVITE_USER_TOKEN An invite token to invite the bot to new channels. Bots cannot autojoin channels, but we implemented an invite procedure for this.
-
KARMABOT_DATABASE_URL The database url which should be compatible with SqlAlchemy. For the provided docker file use postgres://user42:pw42@localhost:5432/karmabot
-
KARMABOT_GENERAL_CHANNEL The channel id of your main channel slack
-
KARMABOT_ADMINS The slack user ids of the users that should have admin command access separated by commas.
If you do not want to use a file you have to provide environment variables with the above names. If no file is present we default to environment variables.
Development pattern for contributors
We use poetry and pyproject.toml
for managing packages, dependencies and some settings.
Setup virtual environment for development
You should follow the instructions to get poetry up and running for your system. We recommend to use a UNIX-based development system (Linux, Mac, WSL). After setting up poetry you can use poetry install
within the project folder to install all dependencies.
The poetry virtual environment should be available in the the project folder as .venv
folder as specified in poetry.toml
. This helps with .venv
detection in IDEs.
Testing and linting
For testing you need to install nox separately from the project venv created by poetry. For testing just use the nox
command within the project folder. You can run all the nox sessions separately if need, e.g.,
- only linting
nox -rs lint
- only testing
nox -rs test
For different sessions see the nox.py
file. Please make sure all tests and checks pass before opening pull requests!
pre-commit
To ensure consistency you can use pre-commit. pip install pre-commit
and after cloning the karmabot repo run pre-commit install
within the project folder.
This will enable pre-commit hooks for checking before every commit.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.