import logging.config from pybit import exceptions from app.bybit import get_bybit_client from app.bybit.logger_bybit.logger_bybit import LOGGING_CONFIG logging.config.dictConfig(LOGGING_CONFIG) logger = logging.getLogger("set_leverage") async def set_leverage(tg_id: int, symbol: str, leverage: str) -> bool: """ Set leverage :param tg_id: int - User ID :param symbol: str - Symbol :param leverage: str - Leverage :return: bool """ try: client = await get_bybit_client(tg_id=tg_id) response = client.set_leverage( category="linear", symbol=symbol, buyLeverage=str(leverage), sellLeverage=str(leverage), ) if response["retCode"] == 0: logger.info( "Leverage set to %s for user: %s", leverage, tg_id, ) return True else: logger.error("Error setting leverage: %s", response["retMsg"]) return False except exceptions.InvalidRequestError as e: if "110043" in str(e): logger.debug( "Leverage set to %s for user: %s", leverage, tg_id, ) return True else: raise except Exception as e: logger.error("Error connecting to Bybit for user %s: %s", tg_id, e) return False async def set_leverage_to_buy_and_sell( tg_id: int, symbol: str, leverage_to_buy: str, leverage_to_sell: str ) -> bool: """ Set leverage to buy and sell :param tg_id: int - User ID :param symbol: str - Symbol :param leverage_to_buy: str - Leverage to buy :param leverage_to_sell: str - Leverage to sell :return: bool """ try: client = await get_bybit_client(tg_id=tg_id) response = client.set_leverage( category="linear", symbol=symbol, buyLeverage=str(leverage_to_buy), sellLeverage=str(leverage_to_sell), ) if response["retCode"] == 0: logger.info( "Leverage set to %s and %s for user: %s", leverage_to_buy, leverage_to_sell, tg_id, ) return True else: logger.error("Error setting leverage for buy and sell for user: %s", tg_id) return False except exceptions.InvalidRequestError as e: if "110043" in str(e): logger.debug( "Leverage set to %s and %s for user: %s", leverage_to_buy, leverage_to_sell, tg_id, ) return True else: raise except Exception as e: logger.error("Error connecting to Bybit for user %s: %s", tg_id, e) return False