Commit Graph
100 Commits
Author SHA1 Message Date
Rapptz 0b026b1283 Elaborate on rename decorator behaviour 2022-05-31 18:14:31 -04:00
Rapptz 36f039a1bf [commands] Fix interaction baton not being set during Context creation 2022-05-30 08:50:19 -04:00
Rapptz 74f3496a74 Add a bandaid fix for Sphinx bug involving admonitions in .pot files
Ref: https://github.com/sphinx-doc/sphinx/issues/10334
2022-05-27 04:30:38 -04:00
Rapptz 4c74523794 Fix versionadded docstrings in voice connect methods 2022-05-27 04:15:23 -04:00
Rapptz cf031f71b9 Add a new extlink for discord documentation 2022-05-27 04:05:01 -04:00
Rapptz 081f483a0d Fix tree not properly accounting for override when checking limits 2022-05-25 23:40:20 -04:00
Rapptz af311bff09 Change .pot files to only contain at most 5 context lines
Crowdin did not like having many comments which caused the upload to
fail.
2022-05-24 10:45:28 -04:00
Rapptz 77baa06a99 Fix bug in permission resolution when dealing with timed out members
This would lead to timed out members having the read_messages
permission set to True instead of False
2022-05-23 11:56:05 -04:00
Rapptz 3dddddc8f9 [commands] Change Context.typing to defer for interaction contexts 2022-05-22 21:49:27 -04:00
Rapptz ee71366f72 Fetch application_info on login
This allows users to no longer pass application_id when calling sync
inside setup_hook
2022-05-22 19:52:50 -04:00
Rapptz 06c43d6772 [commands] Add support for NSFW commands for hybrid commands 2022-05-22 19:31:28 -04:00
Rapptz 573b2121b7 Add support for NSFW application commands
Of course, this somehow doesn't work with subcommands
2022-05-22 19:20:37 -04:00
Rapptz a47396b21e [commands] Change guild_only check to set guild_only in hybrid commands 2022-05-22 18:48:01 -04:00
Rapptz 7905d63f7c Reword missing annotation error to be a bit clearer 2022-05-20 17:21:31 -04:00
Rapptz e813e5efe7 Remove undocumented methods from function signature changes 2022-05-20 16:52:55 -04:00
Rapptz 93e1ff5f07 Change aiohttp object construction to no longer take loop objects 2022-05-20 15:08:38 -04:00
Rapptz 37076a04de Fix autocomplete example to not be as confusing 2022-05-18 20:53:33 -04:00
Rapptz 544bb1e237 Fix typo in FlagConverter example 2022-05-16 17:05:21 -04:00
Rapptz 04f5fcf741 Fix Connectable.connect typing having bad inference if cls is missing 2022-05-16 15:34:51 -04:00
Rapptz b7e25645dc Fix audit log bulk message delete not exposing count 2022-05-14 09:36:28 -04:00
Rapptz 573bb32a1e Fallback to an unavailable guild instead of an Object in interactions 2022-05-14 06:50:27 -04:00
Rapptz f780b0a283 Add setting to fallback to global command if guild command isn't found 2022-05-12 06:36:19 -04:00
Rapptz 6e2fcd4762 [commands] Assign current parameter and argument in hybrid commands 2022-05-12 06:36:19 -04:00
Rapptz 863df7d049 Add support for discord.Thread annotation in app commands 2022-05-11 23:45:02 -04:00
Rapptz 6d55b96fa7 [commands] Fix unsupported discord converters in hybrid commands
These are things that are supported in regular commands but not in
application commands, such as discord.Colour, discord.Game, or
discord.Emoji.
2022-05-11 20:14:39 -04:00
Rapptz 63e50bc369 Don't hotlink typing.List, typing.Dict, or typing.Tuple 2022-05-11 03:54:25 -04:00
Rapptz 06e8683d01 [commands] Fix flag_converter attribute not being properly copied 2022-05-11 03:30:20 -04:00
Rapptz cc3e714338 Fix typo in documentation and mention name kwarg interaction 2022-05-11 03:20:57 -04:00
Rapptz 15ceca1e63 [commands] Add support for FlagConverter in hybrid commands
This works by unpacking and repacking the flag arguments in a flag.
If an unsupported type annotation is found then it will error at
definition time.
2022-05-11 03:15:57 -04:00
Rapptz d319539edb [commands] Fix broken examples in commands.param documentation 2022-05-09 18:15:31 -04:00
Rapptz 40176bb71b Fix bound method autocomplete callbacks not working
This also adds some regression tests
2022-05-09 17:24:48 -04:00
Rapptz b2929513cc Update modal example for latest changes 2022-05-08 04:46:40 -04:00
Rapptz c779e34fa0 Use explicit UTF-8 encoding in SyncWebhook 2022-05-08 00:13:06 -04:00
Rapptz bd3ce597e1 [commands] Fix app command children not being copied in HybridGroup
This degenerate case is only triggered inside cogs when using the
app_command property to define commands, such as this:

    class X(commands.Cog):
        @commands.hybrid_group()
        async def foo(self, ctx):
            ...

        @foo.app_command.command()
        async def bar(self, interaction):
            ...
2022-05-06 09:02:49 -04:00
Rapptz 85ad33eb35 Fix formatting issue in webhook 2022-05-06 09:02:49 -04:00
Rapptz 4dd5cc2bc9 Pass proxy information to interactions and webhooks
Fix #7918
2022-05-05 12:07:09 -04:00
Rapptz 1df3ed861c Fix broken HTTPClient.recreate code to actually clear session 2022-05-05 11:42:50 -04:00
Rapptz 0502c6a0d2 Fix two styling nits with fmt: off 2022-05-05 11:35:26 -04:00
Rapptz fbd57ffa58 Add FAQ entry for disabling all items in a View on timeout 2022-05-05 08:52:24 -04:00
Rapptz 2bfbd1a979 Prefer code-block directive over :: in faq.rst 2022-05-05 08:52:24 -04:00
Rapptz 9793fba338 [commands] Add support for discord.Attachment converters 2022-05-05 01:54:59 -04:00
Rapptz d8846570ae Remove unnecessary type ignore
Despite this except branch is no longer guarded, the exceptional
case could still happen if an Object is passed or if a future channel
type leads to breakage
2022-05-05 01:46:19 -04:00
Rapptz ccc737eb07 [commands] Add support for with_app_command in hybrid commands
This allows the user to make a text-only command without it registering
as an application command
2022-05-05 01:46:19 -04:00
Rapptz b9b6dc960f Add aiohttp[speedups] dependencies to discord.py[speed] 2022-05-04 07:09:45 -04:00
Rapptz d56f5150fa Fix oversight of edit parameters not being keyword only 2022-05-04 05:02:42 -04:00
Rapptz 4733a499a5 Fix documentation build for Client.get_partial_messageable 2022-05-03 11:02:12 -04:00
Rapptz b7ac0a02ca Fix documentation of PartialMessageable.jump_url 2022-05-03 10:57:51 -04:00
Rapptz c22b6dc2cd Add guild property to DMChannel, GroupChannel, and PartialMessageable
This improves generic duck typing programming by allowing narrowing
the types by just checking for a None guild attribute.
2022-05-03 10:55:29 -04:00
Rapptz 8699d2139a Improve generic duck type programming with PartialMessageable
This adds jump_url, permissions_for, and created_at. Luckily, most
cases of this type being constructed already have the guild_id at
creation time.
2022-05-03 10:49:52 -04:00
Rapptz eee65ac39b [commands] Pass permissions v2 information to HybridGroup 2022-05-02 19:08:25 -04:00
Rapptz 79d34fbe78 Change Select.type to use a Literal 2022-05-02 08:22:25 -04:00
Rapptz 6771f3dc99 Remove extraneous channel assignment 2022-05-02 06:54:54 -04:00
Rapptz 66c48c2d0e Add support for checks with autocomplete
Fixes #7969
2022-05-01 20:21:32 -04:00
Rapptz d774b4ac7a Add back tuple __slots__ for AllChannels 2022-05-01 20:10:56 -04:00
Rapptz 11d4dfd8fa Update app_commands validation regex to match newest documentation 2022-05-01 20:01:46 -04:00
Rapptz ca33824ba2 Change AllChannels.id into a property rather than a slot 2022-05-01 19:41:45 -04:00
Rapptz 7f210c90f4 Return a named tuple with message from ForumChannel.create_thread 2022-05-01 19:32:11 -04:00
Rapptz a704666ce3 Add support for app_commands decorators for Group subclasses 2022-05-01 19:10:59 -04:00
Rapptz e8a2eeea06 [commands] Rename Cog.app_command_group to Cog.app_command
This allows it to be consistent with hybrid commands
2022-05-01 19:04:53 -04:00
Rapptz 5f0cf58b2e Revert "Run parent command checks before calling autocomplete callback"
This reverts commit 5e98626d41.

Fix #7978
2022-05-01 18:54:22 -04:00
Rapptz 0551214be1 [commands] Properly set default guilds for group to None instead of [] 2022-05-01 15:44:18 -04:00
Rapptz e873b8294a [commands] Properly set group parent for hybrid commands in cogs 2022-05-01 15:01:30 -04:00
Rapptz d39f9851a7 Add qualified_name for app_commands 2022-05-01 14:01:21 -04:00
Rapptz f4c5d37c8f [commands] Rework Cog + Group inheritance to requite GroupCog
This is an attempt to fix the MRO issues present in the current
implementation. The previous implementation of using both Cog and
app_commands.Group in the inheritance chain caused issues with things
such as walk_commands due to it potentially shadowing the app_commands
version of the call.

In this particular case it's better to use composition instead of
inheritance to avoid these bugs entirely. Especially as more things are
added that could conflict with each other.
2022-05-01 14:01:21 -04:00
Rapptz 5e98626d41 Run parent command checks before calling autocomplete callback
Fixes #7969
2022-04-30 19:53:27 -04:00
Rapptz 6ee56fe964 Fix remaining --verifytypes related errors 2022-04-30 19:43:53 -04:00
Rapptz 5536ef1eea Update to pyright 1.1.242 2022-04-30 19:37:01 -04:00
Rapptz 8be103d6bb Install requests in CI 2022-04-30 18:55:45 -04:00
Rapptz 0851e03f00 Allow creating a news channel in create_text_channel 2022-04-30 07:12:16 -04:00
Rapptz 06df0d7931 Address latest breaking change in creating forum posts 2022-04-29 12:39:12 -04:00
Rapptz ef20264b1c Allow creating an Intent through a passed integer value 2022-04-29 10:50:22 -04:00
Rapptz 9e3375f3fc Fix infinite recursion in TextChannel.type 2022-04-29 10:00:33 -04:00
Rapptz a0dfdb9b1d Fix multiple view instances not dispatching in app commands responses
Due to a quirk in InteractionResponse.send_message not returning a
message, all messages sent with an associated View would end up having
no message_id set. When multiple instances of a View are responded to
in a slash command context, this meant that the newest one would
override the storage of the older one. Ultimately leading to the first
view instance causing interaction failures.

Since fetching the original message is an unacceptable solution to the
problem due to incurred requests, the next best thing is to store an
intermediate interaction_id as a stop gap to differentiate between
the multiple instances. This change however, came with its own set of
complications.

Due to the interaction_id being an intermediate stop gap, the
underlying storage of the view store had to be changed to accommodate
the different way of accessing the data. Mainly, the interaction_id
key had to be quick to swap and remove to another key. This solution
attempts to change the interaction_id interim key with
a full fledged message_id key when it receives one if it's possible.

Note that the only way to obtain the interaction_id back from the
component interaction is to retrieve it from the MessageInteraction
data structure. This is because using the interaction_id of the button
press would be a different interaction ID than the one set as an
interim key. As a consequence, this stop gap only works for application
command based interactions. I am not aware of this bug manifesting in
component based interactions.

This patch also fixes a bug with ViewStore.remove_view not working due
to a bug being suppressed by a type: ignore comment. It also removes
the older __verify_integrity helper method since clean-up is already
done through View.stop() or View timeout.

Hopefully in the near future, the `/callback` endpoint will return
actual message data and this stop gap fix will no longer be necessary.
2022-04-28 12:24:57 -04:00
Rapptz e53daaba35 Properly namespace MISSING in the documentation 2022-04-28 10:56:31 -04:00
Rapptz 204f941e96 Display permissions v2 decorators in the documentation 2022-04-28 10:50:00 -04:00
Rapptz ab64a2eae9 Fix typing of guilds kwargs to take Sequence instead of List 2022-04-28 10:48:57 -04:00
Rapptz acd4a0856e Add Interaction.extras for extraneous data 2022-04-28 07:59:43 -04:00
Rapptz 500bf77103 Document and export MISSING sentinel 2022-04-28 07:52:23 -04:00
Rapptz a14b43f2fd Fix documentation links being broken 2022-04-28 00:53:51 -04:00
Rapptz 3b3d4d3880 Add support for setting and receiving permissions v2
Closes #7592

This does not include audit log changes or the remaining endpoints.
That will come in a different commit.
2022-04-28 00:23:36 -04:00
Rapptz e198a0e7e6 Avoid re-creating View children on edit
The older code attempted to be clever and sync component additions and
removals with what the message edit is doing. In some cases, this led
to the re-creation of those components causing lost attributes to be
dropped such as `_rendered_row` which would mess up handling of view
weights.

Instead of recreating the children list every time and keeping track
of additions and removals, this change just updates the old state with
the new state while ignoring any new or removed additions. This should
work fine in theory due to additions or removals already being present
before editing the View instance in the first place.

Closes #7231 #7511
2022-04-27 01:24:10 -04:00
Rapptz 69b12b97c0 Sync abc.User protocol with more shared methods
This isn't *all* of them but it's a sizeable portion
2022-04-23 03:00:46 -04:00
Rapptz f045b7d63c Fix BanEntry not being exported despite being documented 2022-04-23 01:53:21 -04:00
Rapptz 5fcd4e411f [commands] Add support for typing.Annotated 2022-04-22 06:31:02 -04:00
Rapptz ab33551553 Fix type hints on GuildChannel.set_permissions 2022-04-22 04:50:10 -04:00
Rapptz 832d2c0542 [commands] Fix certain annotations being allowed in hybrid commands
Union types were not properly constrained and callable types were
too eagerly being converted
2022-04-21 04:13:32 -04:00
Rapptz 405c445093 [commands] Unwrap transformers when considering them as converters 2022-04-21 03:19:11 -04:00
Rapptz 5357b9319b [commands] Ignore delete_after for ephemeral interaction sends 2022-04-21 02:07:37 -04:00
Rapptz de941ababe Add Colour.from_str factory method
This moves the command extension parsing code over to the main library
since it can be potentially useful for others.
2022-04-20 06:49:28 -04:00
Rapptz 84e6b9283d [commands] Fix delete_after not working with interaction Context.send 2022-04-19 22:14:11 -04:00
Rapptz cd0d6749ea [commands] Fix Context.reply not working with expired interactions 2022-04-19 22:09:53 -04:00
Rapptz 1d97a35385 [commands] Fix hybrid commands not respecting default annotations 2022-04-19 12:08:22 -04:00
Rapptz 987235d564 Only call async setup if the loop sentinel hasn't been changed 2022-04-19 04:27:52 -04:00
Rapptz 6113f856b6 [commands] Dispatch command events for hybrid commands 2022-04-19 01:40:16 -04:00
Rapptz 2e02f618f0 Add support for enum values that aren't int, str, or float
This coerces them into string options to allow them to be transformed
in the actual code.
2022-04-18 20:15:45 -04:00
Rapptz 2b3cc8fe10 Add Member.display_icon to get the rendered member icon 2022-04-18 17:26:30 -04:00
Rapptz 80aa45ed31 [commands] Skip ws before processing arguments in Greedy transformer 2022-04-15 03:21:36 -04:00
Rapptz 4fb1309e2a [commands] Mock interaction context prefix
Most user-level code probably expects the prefix to be valid and not
None, so mocking it to ensure it's at least a string is probably for
the best.
2022-04-14 19:12:16 -04:00
Rapptz 9ff90d7863 Copy internal attributes for command decorator state
This allows for copies to not clear the state the decorators had
set prior.
2022-04-14 17:45:27 -04:00
Rapptz e541be0427 Fix tests from failing 2022-04-14 06:46:33 -04:00