Бот должен конвертировать криптовалюту в доллары или евро. Для выбора между этими валютами создана команда /main при вводе которой добавляются кнопки "Доллар" или "Евро". Когда я нажимаю на кнопку "Доллар" и затем пишу, например, 1 bitcoin, то он работает. Но когда выбираю "Евро", то он все равно конвертирует в доллары. Заранее спасибо. Вот код:
@bot.message_handler(commands=["main"])
def maincur(message):
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Доллар", callback_data="usd")
item2 = types.InlineKeyboardButton("Евро", callback_data="eur")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Выберите основную валюту для конвертирования", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
try:
if call.message:
if call.data == "usd":
bot.send_message(call.message.chat.id, "Основная валюта - доллар")
elif call.data == "eur":
bot.send_message(call.message.chat.id, "Основная валюта - евро")
bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
bot.answer_callback_query(callback_query_id=call.id, show_alert=False,
text="Основная валюта перевыбрана")
except Exception as ex:
print(repr(ex))
@bot.message_handler(content_types=["text"])
def send_message(message):
try:
num = float(message.text.split(' ')[0])
curr = message.text.split(' ')[1]
req = requests.get(f"https://api.coingecko.com/api/v3/coins/{curr.lower()}")
response = req.json()
sell_price_usd = response["market_data"]["current_price"]["usd"]
sell_price_eur = response["market_data"]["current_price"]["eur"]
if call.data == "usd":
bot.send_message(
message.chat.id,
dol_format(float(sell_price_usd) * num)
)
elif call.data == "eur":
bot.send_message(
message.chat.id,
str('{:,}'.format(okr(float(sell_price_eur) * num)))
)
except ValueError as ve:
print(ve)
bot.send_message(
message.chat.id,
"Неправильный формат"
)
except Exception as ex:
print(ex)
bot.send_message(
message.chat.id,
"Такой криптовалюты нет"
)