docs: async def _send_text(self,
                           request: Request,
                           stack: Stack,
                           parse_mode: Optional[Text] = None):
          """
          Base function for sending text
          """
  
          parts = []
          chat_id = request.message.get_chat_id()
  
          for layer in stack.layers:
              if isinstance(layer, (lyr.Text, lyr.RawText, lyr.Markdown)):
                  text = await render(layer.text, request)
                  parts.append(text)
  
          for part in parts[:-1]:
              await self.call(
                  'sendMessage',
                  text=part,
                  chat_id=chat_id,
              )
  
          msg = {
              'text': parts[-1],
              'chat_id': chat_id,
          }
  
          if parse_mode is not None:
              msg['parse_mode'] = parse_mode
  
          await set_reply_markup(msg, request, stack)
  
          if stack.has_layer(Reply):
              reply = stack.get_layer(Reply)
              if reply.message:
                  msg['reply_to_message_id'] = reply.message['message_id']
  
          if stack.has_layer(Update):
              update = stack.get_layer(Update)
  
              if update.inline_message_id:
                  msg['inline_message_id'] = update.inline_message_id
                  del msg['chat_id']
              else:
                  msg['message_id'] = update.message_id
  
              await self.call(
                  'editMessageText',
                  {'Bad Request: message is not modified'},
                  **msg
              )
          else:
              await self.call('sendMessage', **msg)