Development Note: While ScurryPy has not received an update in a while, it is still actively maintained!
- Lightweight core
- Strictly typed
- Rate limit handling
- Automatic session & gateway management
- Automatic sharding
- Predictable event models and resource classes
Your focus is building what you want instead of fighting a framework.
ScurryPy is a stability-first Discord runtime built around explicit API coverage and strict scope boundaries to minimize long-term breakage.
Install ScurryPy with pip:
pip install scurrypyThe following examples are quick drop-in starters if you wish to try ScurryPy.
Tip
It is recommended to use a .env file for bot tokens. More details about using a .env file here.
# Set TOKEN, APP_ID (bot user ID), and GUILD_ID (for guild command)
# --- Core library imports ---
from scurrypy import Client
from scurrypy.ext.commands import CommandsAddon, ApplicationCommandContext
# --- Setup bot ---
client = Client(token=TOKEN)
commands = CommandsAddon(client, APP_ID)
@commands.slash_command('greet', 'Greet the bot!', guild_ids=[GUILD_ID])
async def on_greet(ctx: ApplicationCommandContext):
await ctx.respond("Hello!")
# --- Run the bot ---
client.run()# Set TOKEN and APP_ID (bot user ID)
# --- Core library imports ---
from scurrypy import Client, Intents
from scurrypy.ext.prefixes import PrefixAddon, PrefixCommandContext
client = Client(token=TOKEN, intents=Intents.DEFAULT | Intents.MESSAGE_CONTENT)
prefixes = PrefixAddon(client, APP_ID, '!')
# --- Setup bot ---
@prefixes.listen('ping')
async def on_ping(ctx: PrefixCommandContext):
await ctx.send("Pong!")
# --- Run the bot ---
client.run()ScurryPy has exactly 3 required dependencies:
- aiohttp (HTTP client)
- websockets (Gateway connection)
- aiofiles (Async file operations)
These dependencies are automatically installed with ScurryPy's pip package.
Explore the full documentation for more examples, guides, and API reference.
See the manifesto section for details!
Got some questions? Check out the FAQ page for commonly asked questions!
Looking for changes? See the Changelog.
