Skip to content

feat: support regex component callbacks #1332

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

Merged
merged 3 commits into from
Apr 11, 2023
Merged

Conversation

Developer89899
Copy link
Contributor

Pull Request Type

  • Feature addition
  • Bugfix
  • Documentation update
  • Code refactor
  • Tests improvement
  • CI/CD pipeline enhancement
  • Other: [Replace with a description]

Description

Adds support for using regex patterns in component_callbacks. Implementation has been structured to avoid losing the O(1) performance of string custom_id matching, but still allowing for this new functionality.

Changes

  • Add client._regex_component_callbacks
  • Update add_component_callback to support regex patterns
  • Update component_callback decor to add support

Related Issues

Test Scenarios

@component_callback(re.compile(r"\w*"))
async def test_callback(ctx: interactions.ComponentContext):
    await ctx.send(f"Clicked {ctx.custom_id}")

Python Compatibility

  • I've ensured my code works on Python 3.10.x
  • I've ensured my code works on Python 3.11.x

Checklist

  • I've run the pre-commit code linter over all edited files
  • I've tested my changes on supported Python versions
  • I've added tests for my code, if applicable
  • I've updated / added documentation, where applicable

@mAxYoLo01
Copy link
Contributor

Looks cool, maybe give a small example + explanation in the component guide?

@codecov-commenter
Copy link

codecov-commenter commented Apr 10, 2023

Codecov Report

Patch coverage: 15.78% and project coverage change: -0.04 ⚠️

Comparison is base (ba44e99) 47.74% compared to head (3d2fd06) 47.70%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #1332      +/-   ##
============================================
- Coverage     47.74%   47.70%   -0.04%     
============================================
  Files           139      139              
  Lines         14284    14297      +13     
============================================
+ Hits           6820     6821       +1     
- Misses         7464     7476      +12     
Impacted Files Coverage Δ
interactions/client/client.py 30.63% <6.66%> (-0.26%) ⬇️
...teractions/models/internal/application_commands.py 31.72% <50.00%> (-0.11%) ⬇️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@Developer89899
Copy link
Contributor Author

Looks cool, maybe give a small example + explanation in the component guide?
@mAxYoLo01

Done

@Developer89899 Developer89899 merged commit 1cba6a4 into unstable Apr 11, 2023
@Developer89899 Developer89899 deleted the re-component branch April 11, 2023 04:24
@Developer89899 Developer89899 mentioned this pull request Apr 12, 2023
16 tasks
Developer89899 added a commit that referenced this pull request Apr 22, 2023
* feat: support regex component callbacks (#1332)

* feat: support regex component callbacks

* docs: document regex matching component callback

* ci: correct from checks.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* chore: switch to MIT license (#1334)

* chore: switch to MIT license

* ci: correct from checks.

* docs: update license through github 

Uses githubs own license tools so the correct license is detected

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* feat: add audit events (#1335)

* feat: add audit new mod events to audit log enum

* feat: add onboarding related events

see discord/discord-api-docs#6041

* refactor: change log level of missing value to warning (#1339)

Lets not scare people with "error"s ay?

* feat: add missing message types (#1338)

* feat: add missing message types

* feat: add deletable message types helper

* build: correct manifest

* feat: support avatar decorations (#1329)

* build: mirrored publish to d.py-interactions and interactions.py (#1336)

* style: add newline to end of manifest

* ci: fix migration issues in integration test bot

* fix: copy checks when inheriting (#1342)

Co-authored-by: Astrea49 <25420078+Astrea49@users.noreply.github.com>

* feat: cooldown upgrades (#1323)

* docs: add changelog page

* style: add EOF newline

* docs: add 5.1.0 to changelog.md

* style: remove trailing whitespace

* fix: reintroduce imports at namespace linter removed

* feat: sync improvements (#1328)

* refactor: improve readability of sync logic

* fix: improve initial sync caching

* docs: add docstring to update_command_cache

* feat: add command deletion to debug ext

* feat: rate limit improvements  (#1321)

* fix: refactor all http routes to generate buckets properly

* fix: resolve routes regex missed

* feat: allow concurrent api calls from the same bucket

* feat: restore bucketLock.locked property

* feat: further bucketlock improvements

* feat: allow bucketlock blocking to be toggled

* refactor: resolve ruff compliant

* fix: correct webhook http

* fix: wrong check condition in the component callback (#1352)

* fix: error when dispatch component callback (#1351)

* docs: adjust and fix many parts of the docs (#1353)

* docs: adjust and fix many parts of the docs

* docs: add note about event object for v4 migration

* docs: replace more instances of InteractionContext

---------

Co-authored-by: Astrea49 <25420078+Astrea49@users.noreply.github.com>

* feat: caching improvements (#1350)

* feat: add support for force fetching

* feat: track if a user object has been fetched

* feat: add force flag to client helper methods

* feat: update all cache fetch methods to have  a force param

* feat: add reset_with_key and get_cooldown_time_with_key (#1345)

* made get_cooldown_with_key async for consistency, added reset_with_key and get_cooldown_time_with_key

* ci: correct from checks.

* fixed pre-commit problems

* comment on #1345, resolved

* made Cooldown.reset_all async #1345

* bot.load => bot.load_extension

* reverted 8217f4e

* made get_cooldown_time_with_key and reset_with_key sync

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Astrea <25420078+AstreaTSS@users.noreply.github.com>
Co-authored-by: Astrea49 <25420078+Astrea49@users.noreply.github.com>
Co-authored-by: Damego <damego.dev@gmail.com>
Co-authored-by: chronosirius <73508925+chronosirius@users.noreply.github.com>
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.

4 participants