33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
import app.telegram.database.requests as rq
|
|
import logging.config
|
|
from logger_helper.logger_helper import LOGGING_CONFIG
|
|
from pybit import exceptions
|
|
from pybit.unified_trading import HTTP
|
|
|
|
logging.config.dictConfig(LOGGING_CONFIG)
|
|
logger = logging.getLogger("price_symbol")
|
|
|
|
|
|
async def get_price(tg_id: int, symbol: str) -> float:
|
|
"""
|
|
Асинхронно получает текущую цену символа пользователя на Bybit.
|
|
|
|
:param tg_id: int - ID пользователя Telegram
|
|
:return: float - текущая цена символа
|
|
"""
|
|
api_key = await rq.get_bybit_api_key(tg_id)
|
|
secret_key = await rq.get_bybit_secret_key(tg_id)
|
|
|
|
client = HTTP(
|
|
api_key=api_key,
|
|
api_secret=secret_key
|
|
)
|
|
|
|
try:
|
|
price = float(
|
|
client.get_tickers(category='linear', symbol=symbol).get('result').get('list')[0].get('ask1Price'))
|
|
return price
|
|
except exceptions.InvalidRequestError as e:
|
|
logger.error(f"Ошибка при получении цены: {e}")
|
|
return 1.0
|