A hybrid between a framework for building Mastodon bots and a standalone bot.
- A Mastodon account
- Preferably a bot account, but a normal account will work as well
- A Mastodon application
- Log into your Mastodon account on the respective instance's web interface
- Navigate to Preferences > Development > Your applications
- Click "New application"
- Set an application name (e.g. "Rather Curious Bot")
- For basic usage, allow the application to read and write to your account
- You can also try specifying more granular permissions but this is not tested (yet)
- Click "Submit"
- Make sure you are in the respective application's details page
- Copy "Your access token"
- This is your bot's access token
- You will need this later
- Do not share this token as it allows access to your account
- Configuration is handled through environment variables, a
.envfile, or command-line arguments (--helpfor more information) - To see an example configuration, see
.env.example - This can be copied to
.envand edited to suit your needs
- Python (3.11+)
- Poetry
- Poetry is a package manager for Python that manages dependencies and virtual environments
- Clone the repository
git clone https://github.com/slashtechno/pystodon
- Change directory into the repository
cd pystodon
- Install dependencies
poetry install
- Confirm the bot has been configured correctly
poetry run python -m pystodon
Recommended, especially if you want to use commands that depend on a database (e.g. #remindme)
- Docker
- Docker is a platform for developing, shipping, and running applications in containers
- Docker Compose
- Docker Compose is a tool for defining and running multi-container Docker applications
- Clone the repository
git clone https://github.com/slashtechno/pystodon
- Change directory into the repository
cd pystodon
- Confirm the bot has been configured correctly
docker-compose up -d- The
-dflag runs the containers in the background
- The
- Python (3.11+)
- See the Poetry section for more information
Not recommended as you can't modify the commands
- Python (3.11+)
- Read the Poetry section for more information
pip install pystodon- You may need to use
pip3instead ofpipdepending on your system - In addition, you may want to try
python -m pip install pystodonorpython3 -m pip install pystodonif the above commands do not work
- You may need to use
- Assuming programs installed by
pipare in your PATH, you can run the bot withpystodon
- By default, the bot will use the commands configured in
pystodon/commands.py- Commands include
#remindme,#timezone,#weather, and/test - The command
help(note the lack of a prefix) will list all available commands and can be used to get more information on a specific command - These commands can be modified, removed, or added to suit your needs
- Look in
pystodon/__main__.pyto see how commands are added - When running with Docker, run
docker compose --buildto rebuild the image with the new commands
- Look in
- Commands include
- The syntax for commands is
@bot_username@example.com command [arguments]- For example,
@rathercurious #remindme in 1h30m - The bot will match the visibility of the command to the visibility of the message it is replying to
- If the message is public, the bot will reply with a public message
- If the message is unlisted, the bot will reply with an unlisted message
- If the message is direct, the bot will reply with a direct message
- It's recommended to set
RC_ALWAYS_MENTIONtoTruein the.env(or use--always-mention) to ensure the user is mentioned in the reply
- For example,