pybot
Wrapper for python-telegram-bot to allow dynamic plug-in architecture, an attempt to make python-telegram-bot more hubottish.
Execution flow
bin/pybotstarts the bot with the selected adapter and using the configuration options defined inconf/pybot.confor the command-line arguments.The selected adapter receives the message and sends it to the
brain.py.The
brain.pyloads in runtime all the.pyfiles in the./memoryfolder each time and try to execute a defined method, for examplehear(message.text).Each module in
./memorywith that method returns a response, thebrain.pysends it to thepybot.pyand it sends the response back to the chat.
- As the methods are dynamically loaded, you can edit and add the files in
./memorywithout need to restartpybot.py, and they will be reloaded on the next message. Overkill but funny.
Makefile targets
usage: Show this help
setup-venv: Setup virtualenv
lint: Run code linter to check code style
telegram: Run pybot with the telegram adapter
docker-build: Build the docker image for running pybot
docker-telegram: Run with telegram adapter in the docker container
docker-lint: Run pep8 in the docker container
docker-clean: Remove the docker image
Execution example
make docker-telegram
docker run -it --rm --name pybot -v /Users/rael/Code/python/pybot:/usr/src/pybot -w /usr/src/pybot 'pybot' bin/pybot telegram
Starting pybot using conf token file. CTRL-C to quit.
2017-04-17 07:35:54,392 - pybot.interfaces.telegram - INFO - Bot raelbot up and ready!
2017-04-17 07:36:39,371 - pybot.brain - INFO - 116133952, Hello world!, 53693428, 2017-04-17 07:36:39,"53693428";
Contributing
Contributions of all sizes are welcome.
Attributions
- Header image from python-telegram-bot.org
License
You may copy, distribute and modify the software provided that modifications are described and licensed for free under GNU General Public License v3.0. Derivatives works (including modifications or anything statically linked to the library) can only be redistributed under LGPL-3, but applications that use the library don’t have to be.
