Skip to main content

A modern and maintainable Discord bot framework for Python.

Project description

Project logo

Botato

Status GitHub Issues GitHub Pull Requests License: GPL v3


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]

  • pipis 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

botato-0.1.1.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

botato-0.1.1-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

Details for the file botato-0.1.1.tar.gz.

File metadata

  • Download URL: botato-0.1.1.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.3 Darwin/24.4.0

File hashes

Hashes for botato-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2c4233214c436723630542b0edc6a4fdb7c4ea98eb7f3fda35e5c9f4c88c6007
MD5 a01449b6b7ef317936d97a0dac942c62
BLAKE2b-256 21dea3f917693fd024ac051b78c4563d70709dcf632939c2bfa0e6a0b339277a

See more details on using hashes here.

File details

Details for the file botato-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: botato-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 30.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.3 Darwin/24.4.0

File hashes

Hashes for botato-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e7d68a095318271b47da5ad653e1fdc42d09f1d3275bfb4c8b528766748f7d3
MD5 608875af97825d85b34769923b7da879
BLAKE2b-256 9d8830ae020ccbbd42a3760d9dfab6a7a8949a190afd998336a3b30eacf0dbcd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page