Yet another Bot implemented in pure Python. Is designed to support multiple backends with global state machine which can store shortcuts for your commands and more. Support user permissions for actions.
- Free software: MIT license
- Documentation: https://mbot.readthedocs.io.
- Slack
- MQTT (in dev)
- RabbitMQ (TODO)
- Local file
- S3 file
- Support encryption in default
- DB (TODO)
- Slack
- SQL
- AirflowTrigger
- Bash
- Saltstack (pepper client)
- Joker (say some joke)
- History (list of your commands, save shortcuts)
- Help
- Jinja2 Template
- Simple scheduler
- User roles and permissions
- Filebased config/state
- Encrypted storage
- Connections management
- S3 storage
- Dialogs
- Auto installing of dependencies
- Dynamic loading
- Render messages with Jinja2
pip install mbot
$ mbot run
Slack token: xoxb-46465446310727-654564564564654565456
Starting your BOT...
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): slack.com
Config
$ mbot config
{'core': {'backends': ['slack'],
'config_path': '/Users/user/Library/Application '
'Support/mbot/mbot.conf',
'data_path': '/Users/user/Library/Application '
'Support/mbot/state.db'},
'logging': {'verbosity': 'INFO'},
'slack': {'engine': 'mbot.backends.slack.Slack',
'middlewares': ['mbot.contrib.system.Config',
'mbot.contrib.history.history',
'mbot.contrib.debug.Debug',
'mbot.contrib.bash.Bash',
'mbot.contrib.console.MBotConsole',
'mbot.contrib.python.Python',
'mbot.contrib.joker.Joker',
'mbot.contrib.hackernews.HackerNews',
'mbot.contrib.scheduler.Scheduler',
'mbot.contrib.salt.Salt',
'mbot.contrib.connections.Connections',
'mbot.contrib.dialogs.Dialogs',
'mbot.contrib.airflow.AirflowTrigger',
'mbot.contrib.sql.SQL',
'mbot.contrib.help.Help'],
'token': 'xoxb-46465446310727-654564564564654565456'},
'storage': {'encrypt': True,
'engine': 'local',
'fernet_token': 'oMdNGsFou566j4e3SL6cij3HR70D-xIqh58z30B2BAs='}}
Add user to admin group
mbot: users.all()
mbot: users.update("your_user_id", ["admin"], "groups")
- Variables, management
- Support Celery as executor
- SSH
- Use appdirs when data-path is not provied
- Chain of commands