Фласк очень, очень плохо дружит с асинхронщиной. Так что проще всего - подход на базе сервисов. Отдельные процессы, отдельные реализации.
Раз инициатива исходит от фласка, то пусть бот слушает сокет, а фласк отправляет на этот сокет данные в каком-то типовом формате. Можно тот же JSON с нуль-разделителем, например. Набросать велосипед на сокетах с помощью asyncio труда не составит.