code: func (buttons *InlineButtons) Markup(columns int, state string) InlineKeyboard {
  	keyboard := InlineKeyboard{}
  
  	col := 0
  
  	row := InlineButtons{}
  	len := len(*buttons)
  	for i, button := range *buttons {
  		row = append(row, button)
  
  		col++
  		if col == columns || i == (len-1) {
  			col = 0
  			keyboard.AppendRows(row)
  			row = InlineButtons{}
  		}
  	}
  	keyboard.State = state
  	return keyboard
  }
docs: // Markup generate InlineKeyboard from InlineButtons ([]Button), chunking buttons by columns number, and specifying current keyboard state
  // Keyboard state useful for nested levels to determine current position