Изучите работу с базами данных, это позволит убрать чтение из файлов. Тем более файлы с данными создаете с расширением py, что как-бы и ничего страшного, но вообще это расширение python скриптов.
И от множества elif тоже можно избавиться, в них делается одно и то же.
По основному вопросу ответить не так легко, попробуйте более подробно преподнести идею своего бота.
From Prog, вот сколько раз у вас вызывается функция end_convert_for_usd() и подобные для других валют? Вызовите ее один раз, запомните в какой-либо переменной и вставляйте значение. Если там идет запрос на какие-либо веб-ресурсы, то производительность моментально возрастет.
Избавьтесь от этих 12 одинаковых блоков кода. Сделайте отдельную функцию, которая примет на вход текущую валюту и предложит все остальные (только это не значит, что в этой функции надо расписать 12 блоков одинакового кода)
ууууу... код сокращать и сокращать... Если у вас просто идут синхронные запросы, не через, например, aiohttp, то смысла от всей остальной асинхронности просто-напросто нет. Весь цикл событий блокируется.
Советую почистить код, особенно учитывая, что у вас 12 раз повторяется одно и то же. Не забывайте про принцип DRY - Don`t Repeat Yourself.
Просто вернувшись к этому коду через недели две будет вообще не понятно что куда и как.
и посмотри что выходи в консоли. Там должно отобразиться сообщение, которое твой бот отправит ответом.
Но лучше для примера какое-то легковесное видео отправить.
FailureBij, ну так ты, считай сказал то же самое)) Вот в твоем случае это правило не выполняется. Если нужно разъяснить что-то по созданию кнопок, если что-то непонятно в моем коде - пиши тут. А почему одна кнопка отрабатывает не так, как положено - это уже другое.
FailureBij, никто не злой. Правилами ресурса регламентировано, что на одну проблему один вопрос.
Самому посидеть над проблемой - полезно, быстрее научишься искать ошибки. Так что все на твое же благо.
FailureBij, без понятия, я же не вижу обработчик этих кнопок.
Описывай проблему в отдельном вопросе, прикрепляй код, где ты основываясь на callback_data делаешь какие-либо действия.
KiYOshiTor, File_Id - это "адрес" файла на сервере телеграм. Поэтому чтобы получить этот File_id - надо сначала файл туда загрузить.
Попробуй сделать хендлер, отлавливающий файлы в сообщении, отправь боту файл. И простым print(message) посмотри как выглядит твое сообщение. Среди всего прочего будет File_id.
Во-первых код оберните соответствующим тегом
Во вторых - удалите из вопроса токен, и через bot father обновите его, "твой спешл френд бот" уже скомпрометирован.
Dream, импортируйте только там, где это необходимо. Даже если один и тот же модуль будет импортироваться в нескольких файлах. По сути считывание импорта происходит только один раз, при самом первом импорте. Потом уже вы работаете с закэшированными данными, если выражаться самым простым языком. Прочитайте об этом в первом томе Лутца.
А не проще пару скриптов на телеграмм-бота накидать?
Тут вам и смартфон подключенный по USB не нужен и сообщение еще быстрее дойдет.
По сути то нужен метод sendMessage и все. Даже можно без всяческих библиотек обойтись, кидать только GET запросы.
Иван Снигирёв, Проще всего наставить принтов в разные места и отслеживать таким образом где в данный момент отрабатывает код. Может у вас файл большой, может логика не оптимизирована. Без примера кода не понять в чем дело, тут гаданием не занимаются