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