aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2019-12-03 20:28:20 -0800
committerGravatar MarkKoz <[email protected]>2019-12-03 20:28:20 -0800
commit4e414108ef3e098c24b9ab14fd09550673d87207 (patch)
tree942769cf0f2b623491e90a6614f8d57fb15768f5
parentUtils: use the guild's filesize_limit to determine max attachment size (diff)
Utils: add send_attachments param to disable linking to too-large files
-rw-r--r--bot/utils/messages.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/bot/utils/messages.py b/bot/utils/messages.py
index fa1ee80b5..232d3cba6 100644
--- a/bot/utils/messages.py
+++ b/bot/utils/messages.py
@@ -49,12 +49,17 @@ async def wait_for_deletion(
await message.delete()
-async def send_attachments(message: Message, destination: Union[TextChannel, Webhook]) -> List[str]:
+async def send_attachments(
+ message: Message,
+ destination: Union[TextChannel, Webhook],
+ link_large: bool = True
+) -> List[str]:
"""
Re-upload the message's attachments to the destination and return a list of their new URLs.
- Each attachment is sent as a separate message to more easily comply with the 8 MiB request size limit.
- If attachments are too large, they are instead grouped into a single embed which links to them.
+ Each attachment is sent as a separate message to more easily comply with the request/file size
+ limit. If link_large is True, attachments which are too large are instead grouped into a single
+ embed which links to them.
"""
large = []
urls = []
@@ -77,17 +82,19 @@ async def send_attachments(message: Message, destination: Union[TextChannel, Web
username=message.author.display_name,
avatar_url=message.author.avatar_url
)
- else:
+ elif link_large:
large.append(attachment)
except HTTPException as e:
- if e.status == 413:
+ if link_large and e.status == 413:
large.append(attachment)
else:
raise
- if large:
- embed = Embed(description=f"\n".join(f"[{attachment.filename}]({attachment.url})" for attachment in large))
+ if link_large and large:
+ desc = f"\n".join(f"[{attachment.filename}]({attachment.url})" for attachment in large)
+ embed = Embed(description=desc)
embed.set_footer(text="Attachments exceed upload size limit.")
+
if isinstance(destination, TextChannel):
await destination.send(embed=embed)
else: