Skip to content

Commit 297618f

Browse files
authored
Added support for simpler ActionRows
Added support for simpler ActionRows; these can now simply be combined into a list and no longer have to be in a discord.ActionRow: Components (currently only buttons) outside an ActionRow are now automatically placed in an Action Row.
1 parent 452c6aa commit 297618f

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

discord/abc.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,16 +1023,17 @@ async def send(self, content=None, *, tts=False, embed=None, components=None, fi
10231023
embed = embed.to_dict()
10241024

10251025
if components:
1026-
components_list = []
1027-
for component in ([components] if not type(components) == list else components):
1026+
_components = []
1027+
for component in ([components] if not isinstance(components, list) else components):
10281028
if isinstance(component, Button):
1029-
components_list.append(component.to_dict())
1029+
_components.extend(ActionRow(component).sendable())
10301030
elif isinstance(component, DropdownMenue):
1031-
coponent_liste.append(component.to_dict())
1031+
_components.append(component.to_dict())
10321032
elif isinstance(component, ActionRow):
1033-
components_list.extend(component.sendable())
1034-
components = components_list
1035-
1033+
_components.extend(component.sendable())
1034+
elif isinstance(component, list):
1035+
_components.extend(ActionRow(*[obj for obj in component if isinstance(obj, Button)]).sendable())
1036+
components = _components
10361037

10371038
if allowed_mentions is not None:
10381039
if state.allowed_mentions is not None:

discord/message.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,16 +1113,19 @@ async def edit(self, **fields):
11131113
pass
11141114
else:
11151115
if components is not None:
1116-
from .components import Button, DropdownMenue, ActionRow
1117-
components_list = []
1118-
for component in ([components] if not type(components) == list else components):
1119-
if isinstance(component, Button):
1120-
components_list.append(component.to_dict())
1121-
elif isinstance(component, DropdownMenue):
1122-
components_list.append(component.to_dict())
1123-
elif isinstance(component, ActionRow):
1124-
components_list.extend(component.sendable())
1125-
fields['components'] = components_list
1116+
_components = []
1117+
if components is not None:
1118+
for component in ([components] if not type(components) == list else components):
1119+
if isinstance(component, Button):
1120+
_components.extend(ActionRow(component).sendable())
1121+
elif isinstance(component, DropdownMenue):
1122+
_components.append(component.to_dict())
1123+
elif isinstance(component, ActionRow):
1124+
_components.extend(component.sendable())
1125+
elif isinstance(component, list):
1126+
_components.extend(ActionRow(*[obj for obj in component if isinstance(obj, Button)]).sendable())
1127+
fields['components'] = _components
1128+
11261129
try:
11271130
suppress = fields.pop('suppress')
11281131
except KeyError:
@@ -1648,11 +1651,13 @@ async def edit(self, **fields):
16481651
if components is not None:
16491652
for component in ([components] if not type(components) == list else components):
16501653
if isinstance(component, Button):
1651-
_components.append(component.to_dict())
1654+
_components.extend(ActionRow(component).sendable())
16521655
elif isinstance(component, DropdownMenue):
16531656
_components.append(component.to_dict())
16541657
elif isinstance(component, ActionRow):
16551658
_components.extend(component.sendable())
1659+
elif isinstance(component, list):
1660+
_components.extend(ActionRow(*[obj for obj in component if isinstance(obj, Button)]).sendable())
16561661
fields['components'] = _components
16571662

16581663
try:

0 commit comments

Comments
 (0)