Skip to content

feat: add example cog with hybrid and slash command implementations #720

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

electron271
Copy link
Contributor

@electron271 electron271 commented Feb 4, 2025

make sure to move the example.py file somewhere else

Summary by Sourcery

New Features:

  • Add an example command that can be invoked as both a slash command and a hybrid command.

Copy link
Contributor

sourcery-ai bot commented Feb 4, 2025

Reviewer's Guide by Sourcery

This pull request introduces an example cog demonstrating hybrid and slash command implementations. It showcases the usage of commands.hybrid_command for commands accessible via both slash and prefix, and app_commands.command for slash-only commands. The cog also utilizes the EmbedCreator class for creating embeds.

Sequence diagram for hybrid command interaction

sequenceDiagram
    actor User
    participant Discord
    participant Tux
    participant Example
    participant EmbedCreator

    Note over User: Can use either slash or prefix command
    alt Slash Command
        User->>Discord: /example
    else Prefix Command
        User->>Discord: !example
    end
    Discord->>Tux: Process command
    Tux->>Example: example_hybrid_or_prefix()
    Example->>EmbedCreator: create_embed()
    EmbedCreator-->>Example: Return embed
    Example-->>User: Send embed message
Loading

Sequence diagram for slash-only command interaction

sequenceDiagram
    actor User
    participant Discord
    participant Tux
    participant Example
    participant EmbedCreator

    User->>Discord: /example-app-command
    Discord->>Tux: Process interaction
    Tux->>Example: example_app_command()
    Example->>EmbedCreator: create_embed()
    EmbedCreator-->>Example: Return embed
    Example-->>User: Send embed message
Loading

Class diagram for Example cog implementation

classDiagram
    class Example {
        +bot: Tux
        +example_hybrid_or_prefix(ctx: Context[Tux])
        +example_app_command(interaction: Interaction)
    }
    class commands.Cog {
        <<interface>>
    }
    class EmbedCreator {
        +create_embed()
    }
    Example --|> commands.Cog
    Example ..> EmbedCreator: uses
    note for Example "Implements both hybrid and slash commands"
Loading

File-Level Changes

Change Details Files
Added an example cog with a hybrid command.
  • Implemented a hybrid command named "example" accessible via both slash and prefix.
  • Added an alias "test" for the hybrid command.
  • Utilized EmbedCreator to create and send an embed in response to the command.
tux/cogs/utility/example.py
Implemented an example slash command.
  • Created a slash command named "example-app-command".
  • Utilized EmbedCreator to create and send an embed in response to the command.
tux/cogs/utility/example.py
Added a setup function to load the cog.
  • Defined an async setup function to add the Example cog to the bot.
tux/cogs/utility/example.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!
  • Generate a plan of action for an issue: Comment @sourcery-ai plan on
    an issue to generate a plan of action for it.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @electron271 - I've reviewed your changes - here's some feedback:

Overall Comments:

  • Please provide a more detailed PR description explaining the purpose of adding this example cog and clarify whether the current location (tux/cogs/utility/) is the intended final location for this file.
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@electron271
Copy link
Contributor Author

@kzndotsh needs to be figured out, you said would be added to the pre-0.1 documentation

Introduce a new `demos.py` file under the `admin` cog to showcase
various discord.py features. This file serves as a comprehensive
demonstration of best practices, including cog organization, command
types (prefix, slash, hybrid), error handling, checks, database
interaction, and UI elements like embeds. The demo commands are grouped
under the `demo` command group for clarity and organization.

refactor(utility): remove outdated example cog

Remove the `example.py` file from the `utility` cog as its functionality
is now covered by the new `demos.py` file. The new demo examples provide
a more comprehensive and organized approach to demonstrating discord.py
features, making the old example redundant.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants