Add support for sending multiple embeds
This commit is contained in:
@ -1158,7 +1158,7 @@ class Messageable(Protocol):
|
||||
content: Optional[str] = ...,
|
||||
*,
|
||||
tts: bool = ...,
|
||||
embed: Embed = ...,
|
||||
embeds: List[Embed] = ...,
|
||||
files: List[File] = ...,
|
||||
delete_after: int = ...,
|
||||
nonce: Union[str, int] = ...,
|
||||
@ -1169,9 +1169,9 @@ class Messageable(Protocol):
|
||||
) -> Message:
|
||||
...
|
||||
|
||||
async def send(self, content=None, *, tts=False, embed=None, file=None,
|
||||
files=None, delete_after=None, nonce=None,
|
||||
allowed_mentions=None, reference=None,
|
||||
async def send(self, content=None, *, tts=False, embed=None, embeds=None,
|
||||
file=None, files=None, delete_after=None,
|
||||
nonce=None, allowed_mentions=None, reference=None,
|
||||
mention_author=None, view=None):
|
||||
"""|coro|
|
||||
|
||||
@ -1185,9 +1185,11 @@ class Messageable(Protocol):
|
||||
single :class:`~discord.File` object. To upload multiple files, the ``files``
|
||||
parameter should be used with a :class:`list` of :class:`~discord.File` objects.
|
||||
**Specifying both parameters will lead to an exception**.
|
||||
|
||||
If the ``embed`` parameter is provided, it must be of type :class:`~discord.Embed` and
|
||||
it must be a rich embed type.
|
||||
|
||||
To upload a single embed, the ``embed`` parameter should be used with a
|
||||
single :class:`~discord.Embed` object. To upload multiple embeds, the ``embeds``
|
||||
parameter should be used with a :class:`list` of :class:`~discord.Embed` objects.
|
||||
**Specifying both parameters will lead to an exception**.
|
||||
|
||||
Parameters
|
||||
------------
|
||||
@ -1232,6 +1234,8 @@ class Messageable(Protocol):
|
||||
.. versionadded:: 1.6
|
||||
view: :class:`discord.ui.View`
|
||||
A Discord UI View to add to the message.
|
||||
embeds: List[:class:`~discord.Embed`]
|
||||
A list of embeds to upload. Must be a maximum of 10.
|
||||
|
||||
.. versionadded:: 2.0
|
||||
|
||||
@ -1244,6 +1248,7 @@ class Messageable(Protocol):
|
||||
~discord.InvalidArgument
|
||||
The ``files`` list is not of the appropriate size,
|
||||
you specified both ``file`` and ``files``,
|
||||
or you specified both ``embed`` and ``embeds``,
|
||||
or the ``reference`` object is not a :class:`~discord.Message`
|
||||
or :class:`~discord.MessageReference`.
|
||||
|
||||
@ -1256,8 +1261,17 @@ class Messageable(Protocol):
|
||||
channel = await self._get_channel()
|
||||
state = self._state
|
||||
content = str(content) if content is not None else None
|
||||
|
||||
if embed is not None and embeds is not None:
|
||||
raise InvalidArgument('cannot pass both embed and embeds parameter to send()')
|
||||
|
||||
if embed is not None:
|
||||
embed = embed.to_dict()
|
||||
|
||||
elif embeds is not None:
|
||||
if len(embeds) > 10:
|
||||
raise InvalidArgument('embeds parameter must be a list of up to 10 elements')
|
||||
embeds = [embed.to_dict() for embed in embeds]
|
||||
|
||||
if allowed_mentions is not None:
|
||||
if state.allowed_mentions is not None:
|
||||
@ -1294,8 +1308,8 @@ class Messageable(Protocol):
|
||||
|
||||
try:
|
||||
data = await state.http.send_files(channel.id, files=[file], allowed_mentions=allowed_mentions,
|
||||
content=content, tts=tts, embed=embed, nonce=nonce,
|
||||
message_reference=reference, components=components)
|
||||
content=content, tts=tts, embed=embed, embeds=embeds,
|
||||
nonce=nonce, message_reference=reference, components=components)
|
||||
finally:
|
||||
file.close()
|
||||
|
||||
@ -1307,14 +1321,15 @@ class Messageable(Protocol):
|
||||
|
||||
try:
|
||||
data = await state.http.send_files(channel.id, files=files, content=content, tts=tts,
|
||||
embed=embed, nonce=nonce, allowed_mentions=allowed_mentions,
|
||||
message_reference=reference, components=components)
|
||||
embed=embed, embeds=embeds, nonce=nonce,
|
||||
allowed_mentions=allowed_mentions, message_reference=reference,
|
||||
components=components)
|
||||
finally:
|
||||
for f in files:
|
||||
f.close()
|
||||
else:
|
||||
data = await state.http.send_message(channel.id, content, tts=tts, embed=embed,
|
||||
nonce=nonce, allowed_mentions=allowed_mentions,
|
||||
embeds=embeds, nonce=nonce, allowed_mentions=allowed_mentions,
|
||||
message_reference=reference, components=components)
|
||||
|
||||
ret = state.create_message(channel=channel, data=data)
|
||||
|
Reference in New Issue
Block a user