{"id":30815181,"url":"https://github.com/raelga/pybot","last_synced_at":"2025-09-06T08:09:13.451Z","repository":{"id":46779248,"uuid":"60980826","full_name":"raelga/pybot","owner":"raelga","description":"Bot framework in Python with programmable interfaces and dynamic plug-in architecture.","archived":false,"fork":false,"pushed_at":"2022-11-07T20:39:59.000Z","size":264,"stargazers_count":16,"open_issues_count":1,"forks_count":12,"subscribers_count":4,"default_branch":"main","last_synced_at":"2023-03-23T08:08:59.904Z","etag":null,"topics":["bot","python","python-telegram-bot","telegram"],"latest_commit_sha":null,"homepage":"https://pybot.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raelga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-12T17:45:35.000Z","updated_at":"2023-03-19T22:18:45.000Z","dependencies_parsed_at":"2023-01-22T04:50:34.113Z","dependency_job_id":null,"html_url":"https://github.com/raelga/pybot","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/raelga/pybot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raelga%2Fpybot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raelga%2Fpybot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raelga%2Fpybot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raelga%2Fpybot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raelga","download_url":"https://codeload.github.com/raelga/pybot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raelga%2Fpybot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273874160,"owners_count":25183368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","python","python-telegram-bot","telegram"],"created_at":"2025-09-06T08:09:06.872Z","updated_at":"2025-09-06T08:09:13.434Z","avatar_url":"https://github.com/raelga.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/raelga/pybot/tree/main.svg?style=svg)](https://circleci.com/gh/raelga/pybot/tree/main)\n\n# pybot\n\nWrapper for python-telegram-bot to allow dynamic plug-in architecture, an attempt to make python-telegram-bot more hubottish.\n\n### Execution flow\n\n1. `bin/pybot` starts the bot with the selected adapter and using the configuration options defined in `conf/pybot.conf` or the command-line arguments.\n\n1. The selected adapter receives the message and sends it to the `brain.py`.\n\n1. The `brain.py` loads in runtime all the `.py` files in the `./memory` folder each time and try to execute a defined method, for example `hear(message.text)`.\n\n1. Each module in `./memory` with that method returns a response, the `brain.py` sends it to the `pybot.py` and it sends the response back to the chat.\n\n* As the methods are dynamically loaded, you can edit and add the files in `./memory` without need to restart `pybot.py`, and they will be reloaded on the next message. Overkill but funny.\n\n### Makefile targets\n\n```Makefile\nusage:             Show this help\nsetup-venv:        Setup virtualenv\nlint:              Run code linter to check code style\ntelegram:          Run pybot with the telegram adapter\ndocker-build:      Build the docker image for running pybot\ndocker-telegram:   Run with telegram adapter in the docker container\ndocker-lint:       Run pep8 in the docker container\ndocker-clean:      Remove the docker image\n```\n\n### Execution example\n\n````bash\nmake docker-telegram\n````\n\n```\ndocker run -it --rm --name pybot -v /Users/rael/Code/python/pybot:/usr/src/pybot -w /usr/src/pybot 'pybot' bin/pybot telegram\nStarting pybot using conf token file. CTRL-C to quit.\n2017-04-17 07:35:54,392 - pybot.interfaces.telegram - INFO - Bot raelbot up and ready!\n2017-04-17 07:36:39,371 - pybot.brain - INFO - 116133952, Hello world!, 53693428, 2017-04-17 07:36:39,\"53693428\";\n```\n\n### Contributing\n\nContributions of all sizes are welcome.\n\n### License\n\nYou may copy, distribute and modify the software provided that modifications are described and licensed for free under `LGPL-3 \u003chttps://www.gnu.org/licenses/lgpl-3.0.html\u003e`_. 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraelga%2Fpybot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraelga%2Fpybot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraelga%2Fpybot/lists"}