Rename MessageChannel.send_message to send and unify interface.
This removes MessageChannel.upload.
This commit is contained in:
		@@ -140,7 +140,7 @@ class MessageChannel(metaclass=abc.ABCMeta):
 | 
			
		||||
        raise NotImplementedError
 | 
			
		||||
 | 
			
		||||
    @asyncio.coroutine
 | 
			
		||||
    def send_message(self, content=None, *, tts=False, embed=None):
 | 
			
		||||
    def send(self, content=None, *, tts=False, embed=None, file=None, filename=None):
 | 
			
		||||
        """|coro|
 | 
			
		||||
 | 
			
		||||
        Sends a message to the channel with the content given.
 | 
			
		||||
@@ -149,6 +149,20 @@ class MessageChannel(metaclass=abc.ABCMeta):
 | 
			
		||||
        If the content is set to ``None`` (the default), then the ``embed`` parameter must
 | 
			
		||||
        be provided.
 | 
			
		||||
 | 
			
		||||
        The ``file`` parameter should be either a string denoting the location for a
 | 
			
		||||
        file or a *file-like object*. The *file-like object* passed is **not closed**
 | 
			
		||||
        at the end of execution. You are responsible for closing it yourself.
 | 
			
		||||
 | 
			
		||||
        .. note::
 | 
			
		||||
 | 
			
		||||
            If the file-like object passed is opened via ``open`` then the modes
 | 
			
		||||
            'rb' should be used.
 | 
			
		||||
 | 
			
		||||
        The ``filename`` parameter is the filename of the file.
 | 
			
		||||
        If this is not given then it defaults to ``file.name`` or if ``file`` is a string
 | 
			
		||||
        then the ``filename`` will default to the string given. You can overwrite
 | 
			
		||||
        this value by passing this in.
 | 
			
		||||
 | 
			
		||||
        If the ``embed`` parameter is provided, it must be of type :class:`Embed` and
 | 
			
		||||
        it must be a rich embed type.
 | 
			
		||||
 | 
			
		||||
@@ -160,6 +174,12 @@ class MessageChannel(metaclass=abc.ABCMeta):
 | 
			
		||||
            Indicates if the message should be sent using text-to-speech.
 | 
			
		||||
        embed: :class:`Embed`
 | 
			
		||||
            The rich embed for the content.
 | 
			
		||||
        file: file-like object or filename
 | 
			
		||||
            The *file-like object* or file path to send.
 | 
			
		||||
        filename: str
 | 
			
		||||
            The filename of the file. Defaults to ``file.name`` if it's available.
 | 
			
		||||
            If this is provided, you must also provide the ``file`` parameter or it
 | 
			
		||||
            is silently ignored.
 | 
			
		||||
 | 
			
		||||
        Raises
 | 
			
		||||
        --------
 | 
			
		||||
@@ -175,12 +195,26 @@ class MessageChannel(metaclass=abc.ABCMeta):
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        channel_id, guild_id = self._get_destination()
 | 
			
		||||
        state = self._state
 | 
			
		||||
        content = str(content) if content else None
 | 
			
		||||
        if embed is not None:
 | 
			
		||||
            embed = embed.to_dict()
 | 
			
		||||
 | 
			
		||||
        data = yield from self._state.http.send_message(channel_id, content, guild_id=guild_id, tts=tts, embed=embed)
 | 
			
		||||
        return Message(channel=self, state=self._state, data=data)
 | 
			
		||||
        if file is not None:
 | 
			
		||||
            try:
 | 
			
		||||
                with open(file, 'rb') as f:
 | 
			
		||||
                    buffer = io.BytesIO(f.read())
 | 
			
		||||
                    if filename is None:
 | 
			
		||||
                        _, filename = os.path.split(file)
 | 
			
		||||
            except TypeError:
 | 
			
		||||
                buffer = file
 | 
			
		||||
 | 
			
		||||
            data = yield from state.http.send_file(channel_id, buffer, guild_id=guild_id, filename=filename,
 | 
			
		||||
                                                   content=content, tts=tts, embed=embed)
 | 
			
		||||
        else:
 | 
			
		||||
            data = yield from state.http.send_message(channel_id, content, guild_id=guild_id, tts=tts, embed=embed)
 | 
			
		||||
 | 
			
		||||
        return Message(channel=self, state=state, data=data)
 | 
			
		||||
 | 
			
		||||
    @asyncio.coroutine
 | 
			
		||||
    def send_typing(self):
 | 
			
		||||
@@ -208,65 +242,6 @@ class MessageChannel(metaclass=abc.ABCMeta):
 | 
			
		||||
        """
 | 
			
		||||
        return Typing(self)
 | 
			
		||||
 | 
			
		||||
    @asyncio.coroutine
 | 
			
		||||
    def upload(self, fp, *, filename=None, content=None, tts=False):
 | 
			
		||||
        """|coro|
 | 
			
		||||
 | 
			
		||||
        Sends a message to the channel with the file given.
 | 
			
		||||
 | 
			
		||||
        The ``fp`` parameter should be either a string denoting the location for a
 | 
			
		||||
        file or a *file-like object*. The *file-like object* passed is **not closed**
 | 
			
		||||
        at the end of execution. You are responsible for closing it yourself.
 | 
			
		||||
 | 
			
		||||
        .. note::
 | 
			
		||||
 | 
			
		||||
            If the file-like object passed is opened via ``open`` then the modes
 | 
			
		||||
            'rb' should be used.
 | 
			
		||||
 | 
			
		||||
        The ``filename`` parameter is the filename of the file.
 | 
			
		||||
        If this is not given then it defaults to ``fp.name`` or if ``fp`` is a string
 | 
			
		||||
        then the ``filename`` will default to the string given. You can overwrite
 | 
			
		||||
        this value by passing this in.
 | 
			
		||||
 | 
			
		||||
        Parameters
 | 
			
		||||
        ------------
 | 
			
		||||
        fp
 | 
			
		||||
            The *file-like object* or file path to send.
 | 
			
		||||
        filename: str
 | 
			
		||||
            The filename of the file. Defaults to ``fp.name`` if it's available.
 | 
			
		||||
        content: str
 | 
			
		||||
            The content of the message to send along with the file. This is
 | 
			
		||||
            forced into a string by a ``str(content)`` call.
 | 
			
		||||
        tts: bool
 | 
			
		||||
            If the content of the message should be sent with TTS enabled.
 | 
			
		||||
 | 
			
		||||
        Raises
 | 
			
		||||
        -------
 | 
			
		||||
        HTTPException
 | 
			
		||||
            Sending the file failed.
 | 
			
		||||
 | 
			
		||||
        Returns
 | 
			
		||||
        --------
 | 
			
		||||
        :class:`Message`
 | 
			
		||||
            The message sent.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        channel_id, guild_id = self._get_destination()
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
            with open(fp, 'rb') as f:
 | 
			
		||||
                buffer = io.BytesIO(f.read())
 | 
			
		||||
                if filename is None:
 | 
			
		||||
                    _, filename = os.path.split(fp)
 | 
			
		||||
        except TypeError:
 | 
			
		||||
            buffer = fp
 | 
			
		||||
 | 
			
		||||
        state = self._state
 | 
			
		||||
        data = yield from state.http.send_file(channel_id, buffer, guild_id=guild_id,
 | 
			
		||||
                                                     filename=filename, content=content, tts=tts)
 | 
			
		||||
 | 
			
		||||
        return Message(channel=self, state=state, data=data)
 | 
			
		||||
 | 
			
		||||
    @asyncio.coroutine
 | 
			
		||||
    def get_message(self, id):
 | 
			
		||||
        """|coro|
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user