Skip to main content

Initialise a production-ready Discord.py bot in just 4 lines of code. Smart and automated command syncing, preconditions (and its presets), easy-to-use in-Discord dashboard, and more. A Dopamine Studios project.

Project description

Beacon

InstallFeaturesComparisonQuick StartReport Bug

Beacon is an Unopinionated Framework for discord.py which allows you to initialize a production-ready Discord bot in just 4 lines of code. It is designed to streamline the development of scalable Discord applications by automating the process of registering commands and simplify the process of creating them, diagnosing the bot, and various other utilities such as a paginator helper and "Private View" helpers which let only the user who initiated the interaction to interact with the components like buttons.

A Dopamine Studios product.


Installing

Use Python 3.12 or higher:

# Linux/MacOS
python3 -m pip install -U discord-beacon
# Windows
py -3 -m pip install -U discord-beacon

Features

1. Smart Command Syncing

The framework includes a Command Registry that compares local command states with remote Discord API states. This ensures that global and guild-specific slash commands are only synced when changes are detected, preventing unnecessary API overhead and rate-limit triggers.

2. Beacon Commands decorator with Preconditions

The @beacon_commands.command decorator replaces the standard discord.py version, allowing you to define permissions and cooldowns in a single line.

  • Simplified Syntax: Define name, description, permissions, and cooldowns within one decorator.
  • Implicit Global Cooldown: Every command is protected by the bot's global rate limit by default.
  • Group Support: Use beacon_commands.Group to apply permissions or cooldowns to an entire category of subcommands at once.
from beacon import beacon_commands

@beacon_commands.command(
    name="ban",
    permissions_preset="moderator",
    global_cooldown=True
)
async def ban_member(interaction: discord.Interaction, member: discord.Member):
    await member.ban()
    await interaction.response.send_message(f"{member.display_name} has been banned.")

3. Precondition Decorators

If you prefer using standard app_commands, you can use the standalone @preconditions decorators to enforce rules dynamically.

  • Permission Presets: Use pre-defined roles like "admin", "moderator", or "support" instead of manual permission bitfields.
  • Advanced Logic: Includes has_permissions_any (pass if user has one of many) and has_permissions (must have all).
  • Smart Rate Limiting: Easily implement command-specific or bot-wide global cooldowns to prevent spam.
Preset Required Permissions
"bot_owner" Restricts usage to the bot owner/team owners.
moderator Manage Messages, Kick Members, Ban Members
admin Administrator
giveaways Manage Guild, Manage Messages
automation Manage Guild, Manage Messages, Manage Channels
manager Manage Guild, Manage Roles, Manage Channels
support Manage Messages, Read Message History
security View Audit Log, Moderate Members
community Manage Expressions, Manage Threads, Create Public Threads
technical Manage Webhooks, Manage Guild

4. In-Discord Owner Dashboard

No need for terminal access/SSH. This simple to use and feature-rich dashboard for bot owners allows you to unload/reload cogs on the fly, restart the bot, or check logs, accessed using /od. This allows bot owner(s) to manage, diagnose the bot right within Discord itself. This dashboard allows the bot to run idefinitely without restarts:

  • Cog Management: Dynamic loading, unloading, and uploading/replacing of cogs.
  • Power State: Remote shutdown and process-level restarts.
  • Logs: Real-time retrieval of log files via the Discord UI.
  • Manual Command Syncs: Sync commands manually globally or within only the current guild.

5. Diagnostics

The built-in Diagnostics "cog" (module) provides real-time monitoring of the bot's health, including:

  • Latency: High precision API, Heartbeat, and Round-trip latency monitoring.
  • Resource Utilization: CPU and RAM usage tracking via psutil.
  • Graphs: Generate graphs for the bot's latency for visual performance auditing.
  • Host Device Metrics: Integration with system sensors to report host location and battery status, if available.

6. Built-in Logging Backend

  • A robust Logging Manager utilizing aiosqlite that can be plugged into any feature of your bot to implement a logging system, such as for mod logs, action logs, etc.

Comparison (with Sapphire Framework and standard discord.py)

Feature Beacon Sapphire (js/ts) discord.py
Easy Setup
(minimal boilerplate)

(Lots of boilerplate)
Preconditions Support
Presets for Permission Checks
in Preconditions
No tantrums over different structure
Python's ease of use
Smart Commands Sync
(Built-in)

(Through plugins)

(not included/standard)
In-Discord Dashboard
(Built-in)
Latency Graphs
(Built-in)
Scalability*
Fast Iteration
Strict TypeScript Rules
Built-in Resource Monitoring
Is it JS, tho?
Wins Imaginary Benchmarks

*Scalability refers to ability to run without problems when the bot is in tens of thousands of servers or more. While it's a common myth that "Python is bloated", that's not true in the context of Discord bots. The real bottleneck in popular Discord bots always comes down to network, not code execution time or memory usage.


Implementation Example

To initialize a bot using the Beacon, follow the following example:

import discord
from beacon import Bot

bot = Bot(command_prefix="?", cogs_path="your cogs/modules folder path here*", logging_path="path to .sqlite, .db, or .db3 file; only define if you want to use this logging backend.", default_diagnostics=True, intents=discord.Intents.default()) # If no cogs folder is defined, it will default to "cogs". If no logging path, logging will be disabled.

bot.run("YOUR_BOT_TOKEN_HERE")

*Note: All .py files will be attempted to be loaded in the folder. It's recommended to only use the defined path for cogs/extensions/modules.


Requirements

  • discord.py
  • aiosqlite
  • psutil
  • Pillow
  • geocoder

License & Attribution

Beacon is licensed under the Apache License 2.0.

How to Credit

While you are free to use this framework for private or commercial bots, I require explicit credit. Please include a link to this repository or a mention of "Beacon" in:

  1. Your project's README or documentation.
  2. Your bot's info/credits command (for example /about or /help).

Example: "Built with Beacon"

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

discord_beacon-3.0.0.tar.gz (180.1 kB view details)

Uploaded Source

Built Distribution

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

discord_beacon-3.0.0-py3-none-any.whl (181.2 kB view details)

Uploaded Python 3

File details

Details for the file discord_beacon-3.0.0.tar.gz.

File metadata

  • Download URL: discord_beacon-3.0.0.tar.gz
  • Upload date:
  • Size: 180.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for discord_beacon-3.0.0.tar.gz
Algorithm Hash digest
SHA256 0660d4e1f9229a14dcd2d6597032f745955e7f9837e8b35e79b3bf61fd128c9f
MD5 0311235adb5bbe842eedabfde9c01c3f
BLAKE2b-256 146a5762cf0f0133f5e9d4d8c9b983b23a2c1ae902e195e8f3799d2f159785ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for discord_beacon-3.0.0.tar.gz:

Publisher: publish.yml on DopamineStudios/beacon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file discord_beacon-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: discord_beacon-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 181.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for discord_beacon-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43a94703e92c4730829c5aeedcbc6c968b704a947509f63b350db7568333b232
MD5 d694e84b19feb342e2395413a1b685ee
BLAKE2b-256 ec5396b3cfcd9d3333f094c895a8320b155b78a43957bca74dde687ab8a9a169

See more details on using hashes here.

Provenance

The following attestation bundles were made for discord_beacon-3.0.0-py3-none-any.whl:

Publisher: publish.yml on DopamineStudios/beacon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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