Fixed websocket connected

This commit is contained in:
algizn97
2025-10-06 10:27:52 +05:00
parent 5da00dbaa1
commit c687811ea5
2 changed files with 22 additions and 11 deletions

View File

@@ -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."""

View File

@@ -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: