Commit Graph
190 Commits
Author SHA1 Message Date
Rapptz 76666fbcf4 Properly check for maximum number of children 2024-02-17 01:17:31 -05:00
Soheab_ 070ae24d8d Document all limits in discord.ui 2024-01-26 20:08:00 -05:00
Rapptz 3258507b4a Call inner item callback and interaction_check by default 2024-01-24 13:25:48 -05:00
Rapptz de6a6af5d3 Fix DynamicItem row attribute being overridden 2024-01-06 06:11:39 -05:00
Rapptz 078b500657 Fix dynamic item views having a timeout causing it to evict 2023-12-30 05:00:12 -05:00
Lukas Vacula 3009c46080 Fix typo in documentation; "users" -> "roles" 2023-11-19 19:04:05 -05:00
Soheab_andDanny 698363e76b Refactor from_components for Select classes
Co-authored-by: Danny <1695103+Rapptz@users.noreply.github.com>
2023-09-30 21:21:29 -04:00
Rapptz f617d01eee Refactor human_join into its own private helper function 2023-09-30 13:11:29 -04:00
Soheab_ d7f8a39a66 Remove duplicated doc for default_values kwarg for select decorator 2023-09-30 12:47:19 -04:00
Rapptz c115cfb0ac Remove unnecessary comments 2023-09-29 19:05:52 -04:00
Rapptz 7f7a0acd21 Fix GuildChannel subclasses not working with default select values
This also fixes it so ClientUser is respected as well
2023-09-29 19:04:15 -04:00
Soheab_ c5ecc42c72 Add support for default_values field on selects 2023-09-29 15:55:20 -04:00
Vaskel 5126323640 Add custom_id string to DynamicItem template regex error 2023-09-16 22:47:49 -04:00
z03h e67d00502d Fix View.from_message not creating other Selects 2023-09-12 13:03:29 -04:00
Rapptz 94655cd804 Skip adding views to the synced message store if fully dynamic 2023-09-03 02:52:05 -04:00
Rapptz f793af0456 Add item parameter to DynamicItem.from_custom_id 2023-09-03 02:52:05 -04:00
Rapptz 7c3868ef3b Add Client.remove_dynamic_items 2023-09-03 02:52:05 -04:00
Rapptz a852f90358 Add support for dynamic items that parse custom_id for state 2023-09-03 02:52:05 -04:00
Rapptz 914773d0fb Remove trailing whitespace 2023-06-04 07:53:25 -04:00
yvqc 6b6cbc44ce Fix TextInput's is_persistent() flow 2023-06-04 07:50:56 -04:00
Murtada Altarouti 9717317c78 Add missing import to modal example 2023-05-13 14:16:52 -04:00
Bryan Forbes 1de3562f34 Fix partially uknown typing errors 2023-03-01 19:14:50 -05:00
Rapptz 40227f75de Fix select decorator type checking error 2023-02-13 23:53:56 -05:00
Takagi TasukuandDanny f7e9795495 Call super for __init_subclass__ in View
Co-authored-by: Danny <1695103+Rapptz@users.noreply.github.com>
2023-02-12 02:08:39 -05:00
Rapptz 6cb9a84898 Fix views not being removed from message store backing
This uses the original interaction ID if available for cache eviction
2023-01-25 02:37:30 -05:00
Rapptz bbba8c650f Add missing generic parameters on various Interaction parameters 2023-01-19 07:00:16 -05:00
Alex Nørgaard c677ad0312 Add missing generic to interaction in item callback 2023-01-19 04:38:39 -05:00
Rapptz ed40d55f99 Fix overloads for select decorator 2023-01-16 20:54:29 -05:00
Zephyrkul 7cf3cd51a5 Revert "Infer select type from callback annotation 2022-12-18 05:17:41 -05:00
Zephyrkul b671958e11 Infer select type from callback annotation 2022-12-14 21:59:16 -05:00
cibere f61f7411df Add setter method for ChannelSelect.channel_types 2022-11-17 05:46:09 -05:00
5009c83bc9 Implement New Select Types
Co-authored-by: Soheab_ <33902984+Soheab@users.noreply.github.com>
Co-authored-by: rdrescher909 <51489753+rdrescher909@users.noreply.github.com>
Co-authored-by: Danny <1695103+Rapptz@users.noreply.github.com>
2022-10-27 10:03:45 -04:00
ster 95b6bd8782 Add coro tag to docstrings that were missing it 2022-10-02 17:52:18 -04:00
Ionite 6981eb69c4 Normalize type formatting in TypeError
Normalize most mixed usages of `__class__`, `__class__!r`, 
`__class__.__name__!r` to the standard form of 
`__class__.__name__`
2022-09-12 15:25:55 -04:00
chawkk6404 e62473a1b4 Fix incorrect docs in select menu min_values 2022-08-27 03:09:03 -04:00
Bryan Forbes b12b4b18fd Mark public callbacks as positional-only 2022-08-22 15:21:19 -04:00
Rapptz 6327402730 Update View timeout only if interaction_check passes 2022-08-18 18:55:50 -04:00
Rapptz cdce8fae5b Change ui.TextInput.value to not be Optional 2022-08-17 02:26:17 -04:00
Rapptz ff1dd586d3 Always use last value as a fallback for Select.values 2022-08-14 15:50:16 -04:00
Mikey 9c38cf3aef Fix ui.Select.values in modals 2022-08-14 15:25:43 -04:00
Mikey d826f4f3a8 Change ui.Select.values to a ContextVar to avoid race conditions 2022-08-09 08:37:46 -04:00
Varun J c26473d0eb Fix views not being persistent if modifying custom_id after __init__ 2022-07-31 04:53:25 -04:00
Rapptz efdda635fb Fix View.from_message not respecting ActionRow row order 2022-07-23 15:24:26 -04:00
mniip 1be36c9c3e Change View, Modal, and AudioPlayer to use logger instead of stderr 2022-06-22 02:10:02 -04:00
Lilly Rose Berner 7267d18d9e Improve component typing 2022-05-16 15:30:03 -04:00
Server Bot 902aa245a4 Swap order of arguments in Modal.on_error 2022-05-06 20:16:42 -04:00
NextChai e7ce8b6b77 Add container operations documentation to TextInput 2022-04-30 03:58:11 -04:00
Lilly Rose Berner 7ee15e1d68 Use typing.Literal for channel and component type annotation 2022-04-29 06:07:22 -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 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