code: func (b *Bot) Send(to Recipient, what interface{}, options ...interface{}) (*Message, error) {
  	sendOpts := extractOptions(options)
  
  	switch object := what.(type) {
  	case string:
  		return b.sendText(to, object, sendOpts)
  	case Sendable:
  		return object.Send(b, to, sendOpts)
  	default:
  		return nil, errors.New("telebot: unsupported sendable")
  	}
  }
docs: // Send accepts 2+ arguments, starting with destination chat, followed by
  // some Sendable (or string!) and optional send options.
  //
  // Note: since most arguments are of type interface{}, but have pointer
  // 		method recievers, make sure to pass them by-pointer, NOT by-value.
  //
  // What is a send option exactly? It can be one of the following types:
  //
  //     - *SendOptions (the actual object accepted by Telegram API)
  //     - *ReplyMarkup (a component of SendOptions)
  //     - Option (a shorcut flag for popular options)
  //     - ParseMode (HTML, Markdown, etc)
  //
  // This function will panic upon unsupported payloads and options!