import logging.config from pybit.unified_trading import HTTP import app.telegram.database.requests as rq from logger_helper.logger_helper import LOGGING_CONFIG logging.config.dictConfig(LOGGING_CONFIG) logger = logging.getLogger("get_valid_symbol") async def get_valid_symbols(user_id: int, symbol: str) -> bool: """ Проверяет существование торговой пары на Bybit в категории 'linear'. Эта функция получает API-ключи пользователя из базы данных и с помощью Bybit API проверяет наличие данного символа в списке торговых инструментов категории 'linear'. Args: user_id (int): Идентификатор пользователя Telegram. symbol (str): Торговый символ (валютная пара), например "BTCUSDT". Returns: bool: Возвращает True, если торговая пара существует, иначе False. Raises: Исключения подавляются и вызывается False, если произошла ошибка запроса к API. """ api_key = await rq.get_bybit_api_key(user_id) secret_key = await rq.get_bybit_secret_key(user_id) client = HTTP(api_key=api_key, api_secret=secret_key) try: resp = client.get_instruments_info(category='linear', symbol=symbol) # Проверка наличия результата и непустого списка инструментов if resp.get('retCode') == 0 and resp.get('result') and resp['result'].get('list'): return len(resp['result']['list']) > 0 return False except Exception as e: logging.error(f"Ошибка при получении списка инструментов: {e}") return False