The goal of mobilizon_bots is to provide a suite to reshare Mobilizon events on a broad selection of platforms. This tool enables an organization to automate their social media strategy in regards to events and their promotion. # Usage ## Scheduling and temporal logic The tool is designed to work in combination with a scheduler that executes it at regular intervals. Mobilizon_bots allows fine-grained control over the logic to decide when to publish an event, with the minimization of human effort as its first priority. ## Configuration The configuration is implemented through Dynaconf. It allows a variety of ways to specify configuration keys. Refer to their [documentation](https://www.dynaconf.com/) to discover how configuration files and environment variables can be specified. We provide a sample configuration in the [settings.toml](https://github.com/Tech-Workers-Coalition-Italia/mobilizon-bots/blob/master/mobilizon_bots/settings.toml) file. ### Event selection ### Publishers ### Notifiers # Contributing We welcome contributions from anybody. Currently our process is not structured yet but feel free to open or take issues through Github in case you want to help us. ## Core Concepts ### Publisher A Publisher is responsible for formatting and publishing an event on a given platform. Currently the following publishers are supported: * Telegram ### Notifier Notifiers are similar to Publishers and share most of the implementation. Their purpose is to notify the maintainers when something unexpected happens. ### Publication Strategy A Publication Strategy is responsible for selecting the event to publish. Currently it's possible to publish only one event per run, under the assumption that the user will implement a social media strategy that doesn't require concurrent publishing of multiple events on the same platform. Through proper scheduling and configuration is still possible to achieve such behavior if required. ## Develop To run pre-commit hooks run `pre-commit install` after cloning the repository. Make sure to have `pre-commit` installed in your active python environment. To install: `pip install pre-commit`. For more info: https://pre-commit.com/