code: func (b *Bot) Edit(message Editable, what interface{}, options ...interface{}) (*Message, error) {
  	messageID, chatID := message.MessageSig()
  
  	params := map[string]string{}
  
  	switch v := what.(type) {
  	case string:
  		params["text"] = v
  	case Location:
  		params["latitude"] = fmt.Sprintf("%f", v.Lat)
  		params["longitude"] = fmt.Sprintf("%f", v.Lng)
  	default:
  		panic("telebot: unsupported what argument")
  	}
  
  	// if inline message
  	if chatID == 0 {
  		params["inline_message_id"] = messageID
  	} else {
  		params["chat_id"] = strconv.FormatInt(chatID, 10)
  		params["message_id"] = messageID
  	}
  
  	sendOpts := extractOptions(options)
  	embedSendOptions(params, sendOpts)
  
  	respJSON, err := b.Raw("editMessageText", params)
  	if err != nil {
  		return nil, err
  	}
  
  	return extractMsgResponse(respJSON)
  }
docs: // Edit is magic, it lets you change already sent message.
  //
  // Use cases:
  //
  //     b.Edit(msg, msg.Text, newMarkup)
  //     b.Edit(msg, "new <b>text</b>", tb.ModeHTML)
  //
  //     // Edit live location:
  //     b.Edit(liveMsg, tb.Location{42.1337, 69.4242})
  //