RV
1) Для того чтобы сделать процесс использования api не из приложения тяжелее для злоумышленника можно использовать какого-то рода подпись например на основе отправляемых данных используя КЛЮЧ, таким образом подтверждается целостность данных и их нельзя подменить не зная ключа и алгоритма по которому формируется подпись. Чтобы использовать это в боте придется вытащить полностью алгоритм создания подписи из приложения. Это усложнение жизни злоумышленнику, ведь классические подходы к запросам API которые просто где-то в хедере отправляется ключ повторить в боте значительно легче.
2) Для того чтобы получить нужный КЛЮЧ на клиенте можно использовать различные способы. Самый простой - пользователь вводит свой логин и пароль и в ответ получает постоянный ключ который использует в алгоритме подписи из пункта 1. И уже навернуть всякие подходы тут https://medium.com/@vixentael/key-management-approaches-for-mobile-apps-57bb4db63906