Ошибка: missing 2 required positional arguments:
Исходный код
from extencions import APIException, Convertor
from config import TOKEN, exchanges
import traceback
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start', 'help'])
def start(message: telebot.types.Message):
text = "Приветствие!"
bot.send_message(message.chat.id, text)
@bot.message_handler(commands=['values'])
def values(message: telebot.types.Message):
text = 'Доступные валюты:'
for i in exchanges.keys():
text = '\n'.join((text, i))
bot.reply_to(message, text)
@bot.message_handler(content_types=['text'])
def converter(message: telebot.types.Message):
values = message.text.split(' ')
try:
if len(values) != 3:
raise APIException('Неверное количество параметров!')
answer = Convertor.get_price(*values)
except APIException as e:
bot.reply_to(message, f"Ошибка в команде:\n{e}")
except Exception as e:
traceback.print_tb(e.__traceback__)
bot.reply_to(message, f"Неизвестная ошибка:\n{e}")
else:
bot.reply_to(message, answer)
bot.polling()
и само взаимодействие с сайтом по обмену валюты
import json
import requests
from config import exchanges
class APIException(Exception):
pass
class Convertor:
@staticmethod
def get_price(base, sym, amount):
try:
base_key = exchanges[base.lower()]
except KeyError:
raise APIException(f"Валюта {base} не найдена!")
try:
sym_key = exchanges[sym.lower()]
except KeyError:
raise APIException(f"Валюта {sym} не найдена!")
if base_key == sym_key:
raise APIException(f'Невозможно перевести одинаковые валюты {base}!')
try:
amount = float(amount)
except ValueError:
raise APIException(f'Не удалось обработать количество {amount}!')
r = requests.get(f" https://cash.rbc.ru/cash/converter.html={base_key}&symbols={sym_key}")
resp = json.loads(r.content)
new_price = resp['rates'][sym_key] * amount
new_price = round(new_price, 3)
message = f"Цена {amount} {base} в {sym} : {new_price}"
return message
`
