forked from kodorvan/stcs
Fixed websocket connected
This commit is contained in:
@@ -22,6 +22,7 @@ class WebSocketBot:
|
||||
self.ws_private = None
|
||||
self.user_messages = {}
|
||||
self.user_sockets = {}
|
||||
self.user_keys = {}
|
||||
self.loop = None
|
||||
self.message_handler = TelegramMessageHandler(telegram_bot)
|
||||
|
||||
@@ -37,14 +38,23 @@ class WebSocketBot:
|
||||
if not api_key or not api_secret:
|
||||
continue
|
||||
|
||||
if tg_id in self.user_sockets:
|
||||
keys_stored = self.user_keys.get(tg_id)
|
||||
if tg_id in self.user_sockets and keys_stored == (api_key, api_secret):
|
||||
continue
|
||||
|
||||
if tg_id in self.user_sockets:
|
||||
self.user_sockets.clear()
|
||||
self.user_messages.clear()
|
||||
self.user_keys.clear()
|
||||
logger.info("Closed old websocket for user %s due to key change", tg_id)
|
||||
|
||||
success = await self.try_connect_user(api_key, api_secret, tg_id)
|
||||
if success:
|
||||
self.user_keys[tg_id] = (api_key, api_secret)
|
||||
self.user_messages.setdefault(
|
||||
tg_id, {"position": None, "order": None, "execution": None}
|
||||
)
|
||||
logger.info("User %s connected to WebSocket", tg_id)
|
||||
else:
|
||||
await asyncio.sleep(30)
|
||||
|
||||
@@ -54,7 +64,8 @@ class WebSocketBot:
|
||||
"""Clear the user_sockets and user_messages dictionaries."""
|
||||
self.user_sockets.clear()
|
||||
self.user_messages.clear()
|
||||
logger.info("Cleared user_sockets and user_messages on shutdown")
|
||||
self.user_keys.clear()
|
||||
logger.info("Cleared user_sockets")
|
||||
|
||||
async def try_connect_user(self, api_key, api_secret, tg_id):
|
||||
"""Try to connect a user to the WebSocket."""
|
||||
|
@@ -907,7 +907,7 @@ async def leverage(message: Message, state: FSMContext) -> None:
|
||||
|
||||
if leverage_float > max_leverage or leverage_float < min_leverage:
|
||||
await message.answer(
|
||||
text=f"Кредитное плечо должно быть от {min_leverage} до {max_leverage}.",
|
||||
text=f"Кредитное плечо должно быть от {min_leverage} до {max_leverage}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
logger.info(
|
||||
@@ -946,7 +946,7 @@ async def leverage(message: Message, state: FSMContext) -> None:
|
||||
)
|
||||
if req_leverage and req_leverage_to_buy_and_sell:
|
||||
await message.answer(
|
||||
text=f"Кредитное плечо успешно установлено на {leverage_float}.",
|
||||
text=f"Кредитное плечо успешно установлено на {leverage_float}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
logger.info(
|
||||
@@ -1036,7 +1036,7 @@ async def set_leverage_to_buy(message: Message, state: FSMContext) -> None:
|
||||
)
|
||||
if leverage_to_buy_float > max_leverage:
|
||||
await message.answer(
|
||||
text=f"Кредитное плечо {leverage_to_buy_float} превышает максимальное {max_leverage} для {symbol}.",
|
||||
text=f"Кредитное плечо {leverage_to_buy_float} превышает максимальное {max_leverage} для {symbol}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
logger.info(
|
||||
@@ -1149,7 +1149,7 @@ async def set_leverage_to_sell(message: Message, state: FSMContext) -> None:
|
||||
)
|
||||
if leverage_to_sell_float < min_leverage:
|
||||
await message.answer(
|
||||
text=f"Кредитное плечо {leverage_to_sell_float} ниже минимального {min_leverage} для {symbol}.",
|
||||
text=f"Кредитное плечо {leverage_to_sell_float} ниже минимального {min_leverage} для {symbol}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
logger.info(
|
||||
@@ -1188,7 +1188,7 @@ async def set_leverage_to_sell(message: Message, state: FSMContext) -> None:
|
||||
if req:
|
||||
await message.answer(
|
||||
text=f"Размер кредитного плеча установлен на {leverage_to_buy_float} для Лонга "
|
||||
f"и {leverage_to_sell_float} для Шорта .",
|
||||
f"и {leverage_to_sell_float} для Шорта",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
else:
|
||||
@@ -1310,7 +1310,7 @@ async def set_order_quantity(message: Message, state: FSMContext) -> None:
|
||||
|
||||
if quantity < min_order_qty or quantity > max_order_qty:
|
||||
await message.answer(
|
||||
text=f"Количество ордера должно быть от {min_order_qty} до {max_order_qty}.",
|
||||
text=f"Количество ордера должно быть от {min_order_qty} до {max_order_qty}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
return
|
||||
@@ -1321,7 +1321,7 @@ async def set_order_quantity(message: Message, state: FSMContext) -> None:
|
||||
|
||||
if req:
|
||||
await message.answer(
|
||||
text=f"Количество ордера установлено на {message.text}.",
|
||||
text=f"Количество ордера установлено на {message.text}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
else:
|
||||
@@ -1428,7 +1428,7 @@ async def set_martingale_factor(message: Message, state: FSMContext) -> None:
|
||||
|
||||
if req:
|
||||
await message.answer(
|
||||
text=f"Коэффициент мартингейла установлен на {message.text}.",
|
||||
text=f"Коэффициент мартингейла установлен на {message.text}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
else:
|
||||
@@ -1534,7 +1534,7 @@ async def set_max_bets_in_series(message: Message, state: FSMContext) -> None:
|
||||
|
||||
if req:
|
||||
await message.answer(
|
||||
text=f"Максимальное количество шагов установлено на {message.text}.",
|
||||
text=f"Максимальное количество шагов установлено на {message.text}",
|
||||
reply_markup=kbi.back_to_additional_settings,
|
||||
)
|
||||
else:
|
||||
|
Reference in New Issue
Block a user