code: async def edit(self, **fields):
          
  
          try:
              content = fields['content']
          except KeyError:
              pass
          else:
              if content is not None:
                  fields['content'] = str(content)
  
          try:
              embed = fields['embed']
          except KeyError:
              pass
          else:
              if embed is not None:
                  fields['embed'] = embed.to_dict()
  
          data = await self._state.http.edit_message(self.channel.id, self.id, **fields)
          self._update(channel=self.channel, data=data)
  
          try:
              delete_after = fields['delete_after']
          except KeyError:
              pass
          else:
              if delete_after is not None:
                  await self.delete(delay=delete_after)
docs: |coro|
  
          Edits the message.
  
          The content must be able to be transformed into a string via ``str(content)``.
  
          Parameters
          -----------
          content: Optional[:class:`str`]
              The new content to replace the message with.
              Could be ``None`` to remove the content.
          embed: Optional[:class:`Embed`]
              The new embed to replace the original with.
              Could be ``None`` to remove the embed.
          delete_after: Optional[:class:`float`]
              If provided, the number of seconds to wait in the background
              before deleting the message we just edited. If the deletion fails,
              then it is silently ignored.
  
          Raises
          -------
          HTTPException
              Editing the message failed.