From 6ffd079cb903fa33240eef941943bafb0698f888 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Wed, 13 Mar 2019 21:58:56 -0400 Subject: [PATCH] Support path-like objects in Attachment.save. Fix #1958 --- discord/message.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/discord/message.py b/discord/message.py index 71ee8f9ac..4b6f5301a 100644 --- a/discord/message.py +++ b/discord/message.py @@ -27,6 +27,7 @@ DEALINGS IN THE SOFTWARE. import asyncio import datetime import re +import io from . import utils from .reaction import Reaction @@ -84,7 +85,7 @@ class Attachment: Parameters ----------- - fp: Union[BinaryIO, str] + fp: Union[BinaryIO, :class:`os.PathLike`] The file-like object to save this attachment to or the filename to use. If a filename is passed then a file is created with that filename and used instead. @@ -112,14 +113,14 @@ class Attachment: """ url = self.proxy_url if use_cached else self.url data = await self._http.get_attachment(url) - if isinstance(fp, str): - with open(fp, 'wb') as f: - return f.write(data) - else: + if isinstance(fp, io.IOBase) and fp.writable(): written = fp.write(data) if seek_begin: fp.seek(0) return written + else: + with open(fp, 'wb') as f: + return f.write(data) class Message: r"""Represents a message from Discord.