Melt the butter in a heavy pot over medium heat. Add the onion and cook for 4 minutes, until soft and translucent, not browned.
Stir in the garlic and ginger and cook for 30 seconds, just until fragrant.
Add the potatoes and stock. Bring to a simmer and cook for 10 to 12 minutes, until the potatoes are just tender.
Stir in the corn, coconut milk, and smoked paprika. Simmer gently for 3 minutes.
Season the tilapia with salt and pepper, then lower it into the broth in a single layer. Poach for 4 to 5 minutes, until opaque and flaky.
Add the bok choy stems and cook for 2 minutes, then stir in the leafy tops and cook for 1 more minute.
Remove from heat, stir in the lime juice, taste for salt, and serve topped with cilantro and chili flakes.