97 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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
 |