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
|