Наверно можно организовать так, чтобы приватники были явно на стороне пользователя и лочились только средства, участвующие в обмене.
Нельзя такое делать. Бот должен иметь доступ к приватникам, которые от балансов пользователя. Иначе его функция эскроу, которую фактически выполняет бот, не будет работать. Также недопустимо чтоб к приватникам баланса имел доступ и бот и пользователь, так как это моментально влечет за собой конфликтные ситуации, которые вообще не решаемы.
Ваше предложение навело на интересную мысль о том, а что если возможно создать обменник на смартконтракте (аналог uniswap) и реализовать его интерфейс обмена не на сайте, а в боте телеграм. Насколько знаю такого еще не было сделано.