[Utils] Tunnel minor fixes (#2366)

- Tunnel uses a safe max size (Max size is related to maximum payload, not maximum file size)
  - Checks attachment sizes prior to download
This commit is contained in:
Michael H 2019-01-10 03:46:49 -05:00 committed by Toby Harradine
parent 8eb8848898
commit 78e4b578e2

View File

@ -2,7 +2,6 @@ import discord
from datetime import datetime from datetime import datetime
from redbot.core.utils.chat_formatting import pagify from redbot.core.utils.chat_formatting import pagify
import io import io
import sys
import weakref import weakref
from typing import List, Optional from typing import List, Optional
from .common_filters import filter_mass_mentions from .common_filters import filter_mass_mentions
@ -151,15 +150,12 @@ class Tunnel(metaclass=TunnelMeta):
""" """
files = [] files = []
size = 0 max_size = 8 * 1000 * 1000
max_size = 8 * 1024 * 1024 if m.attachments and sum(a.size for a in m.attachments) <= max_size:
for a in m.attachments: for a in m.attachments:
_fp = io.BytesIO() _fp = io.BytesIO()
await a.save(_fp) await a.save(_fp)
size += sys.getsizeof(_fp) files.append(discord.File(_fp, filename=a.filename))
if size > max_size:
return []
files.append(discord.File(_fp, filename=a.filename))
return files return files
async def communicate( async def communicate(