Botato
A modern, minimal, and well-documented Discord bot framework for Python. Built to fix everything the others got wrong.
๐ Table of Contents
๐ฎ About
Botato is a Discord bot framework designed for developers who want clarity, simplicity, and reliability.
Where other frameworks suffer from outdated docs, bloated abstractions, and lack of transparency, Botato provides a modern, well-typed, extensible alternative.
It includes a dynamic Gateway client, a fast REST API wrapper, JSON-driven intent management, and typed data models powered by Pydantic.
๐ Getting Started
These instructions will get you a copy of the project up and running locally for development and testing.
Prerequisites
Installing
Clone the repo and install dependencies:
git clone https://github.com/shivkun/botato.git && cd botato
poetry install
Botato is also available on PyPI and is updated with every release. You can install it using pip
, pipx
, or poetry
.
[!NOTE]
pip
is the standard Python package manager and is suitable for installing packages globally or in virtual environments.
pipx
is designed for installing and running Python applications in isolated environments, making it idea for CLI tools.
poetry
is a dependency management and packaging tool that creates virtual environments and manages dependencies for your projects.
pip install botato
pipx install botato
poetry add botato
Activate the environment:
poetry env activate
Run the example bot:
DISCORD_TOKEN=your-token-here poetry run python examples/basic_bot.py
๐ง Running the tests
To run the test suite:
poetry run pytest
๐ Usage
Register events with decorators:
from botato.models.message import Message
@bot.event
async def on_message_create(message: Message):
print(f"{message.author.username}: {message.content}")
๐ Deployment
For production usage, you can use a process manager like systemd
, supervisord
, or pm2
(for cross-platform Python apps).
Make sure to secure your token using environment variables or secret managers.
โ๏ธ Built Using
โ๏ธ Authors
๐ Acknowledgements
- Discord API team & community docs
- discord.py for inspiration (and showing us what not to do)
- Contributors and early testers