code: def reply_chat_action(
          self,
          action: Union[ChatAction, str],
          progress: int = 0
      ) -> "Message":
          
          return self._client.send_chat_action(
              chat_id=self.chat.id,
              action=action,
              progress=progress
          )
docs: Bound method *reply_chat_action* of :obj:`Message <pyrogram.Message>`.
  
          Use as a shortcut for:
  
          .. code-block:: python
  
              client.send_chat_action(
                  chat_id=message.chat.id,
                  action="typing"
              )
  
          Example:
              .. code-block:: python
  
                  message.reply_chat_action("typing")
  
          Args:
              action (:obj:`ChatAction <pyrogram.ChatAction>` | ``str``):
                  Type of action to broadcast.
                  Choose one from the :class:`ChatAction <pyrogram.ChatAction>` enumeration,
                  depending on what the user is about to receive.
                  You can also provide a string (e.g. "typing", "upload_photo", "record_audio", ...).
  
              progress (``int``, *optional*):
                  Progress of the upload process.
                  Currently useless because official clients don't seem to be handling this.
  
          Returns:
              On success, True is returned.
  
          Raises:
              :class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
              ``ValueError`` if the provided string is not a valid ChatAction.