Updated
This commit is contained in:
@@ -6,10 +6,15 @@ start_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
])
|
])
|
||||||
|
|
||||||
settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
[InlineKeyboardButton(text="Настройки", callback_data='clb_settings_message')],
|
|
||||||
[InlineKeyboardButton(text="Запуск", callback_data='clb_start_trading')]
|
[InlineKeyboardButton(text="Запуск", callback_data='clb_start_trading')]
|
||||||
])
|
])
|
||||||
|
|
||||||
|
back_btn_list_settings = [InlineKeyboardButton(text="Назад",
|
||||||
|
callback_data='clb_back_to_special_settings_message')] # Кнопка для возврата к списку каталога настроек
|
||||||
|
back_btn_list_settings_markup = InlineKeyboardMarkup(inline_keyboard=[[InlineKeyboardButton(text="Назад",
|
||||||
|
callback_data='clb_back_to_special_settings_message')]]) # Клавиатура для возврата к списку каталога настроек
|
||||||
|
back_btn_to_main = [InlineKeyboardButton(text="На главную", callback_data='clb_back_to_main')]
|
||||||
|
|
||||||
back_btn_profile = [InlineKeyboardButton(text="Назад", callback_data='clb_start_chatbot_message')]
|
back_btn_profile = [InlineKeyboardButton(text="Назад", callback_data='clb_start_chatbot_message')]
|
||||||
|
|
||||||
special_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
special_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
@@ -20,8 +25,6 @@ special_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
InlineKeyboardButton(text="Дополнительные параметры", callback_data='clb_change_additional_settings')],
|
InlineKeyboardButton(text="Дополнительные параметры", callback_data='clb_change_additional_settings')],
|
||||||
|
|
||||||
[InlineKeyboardButton(text="Подключить Bybit", callback_data='clb_new_user_connect_bybit_api_message')],
|
[InlineKeyboardButton(text="Подключить Bybit", callback_data='clb_new_user_connect_bybit_api_message')],
|
||||||
|
|
||||||
back_btn_profile
|
|
||||||
])
|
])
|
||||||
|
|
||||||
connect_bybit_api_markup = InlineKeyboardMarkup(inline_keyboard=[
|
connect_bybit_api_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
@@ -32,7 +35,7 @@ trading_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
[InlineKeyboardButton(text="Настройки", callback_data='clb_settings_message')],
|
[InlineKeyboardButton(text="Настройки", callback_data='clb_settings_message')],
|
||||||
[InlineKeyboardButton(text="Мои сделки", callback_data='clb_my_deals')],
|
[InlineKeyboardButton(text="Мои сделки", callback_data='clb_my_deals')],
|
||||||
[InlineKeyboardButton(text="Указать торговую пару", callback_data='clb_update_trading_pair')],
|
[InlineKeyboardButton(text="Указать торговую пару", callback_data='clb_update_trading_pair')],
|
||||||
[InlineKeyboardButton(text="Начать торговлю", callback_data='clb_update_entry_type')],
|
[InlineKeyboardButton(text="Начать торговать", callback_data='clb_update_entry_type')],
|
||||||
[InlineKeyboardButton(text="Остановить торговлю", callback_data='clb_stop_trading')],
|
[InlineKeyboardButton(text="Остановить торговлю", callback_data='clb_stop_trading')],
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -52,15 +55,11 @@ entry_order_type_markup = InlineKeyboardMarkup(
|
|||||||
[
|
[
|
||||||
InlineKeyboardButton(text="Market (текущая цена)", callback_data="entry_order_type:Market"),
|
InlineKeyboardButton(text="Market (текущая цена)", callback_data="entry_order_type:Market"),
|
||||||
InlineKeyboardButton(text="Limit (фиксированная цена)", callback_data="entry_order_type:Limit"),
|
InlineKeyboardButton(text="Limit (фиксированная цена)", callback_data="entry_order_type:Limit"),
|
||||||
],
|
], back_btn_to_main
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
back_btn_list_settings = [InlineKeyboardButton(text="Назад",
|
|
||||||
callback_data='clb_back_to_special_settings_message')] # Кнопка для возврата к списку каталога настроек
|
|
||||||
back_btn_list_settings_markup = InlineKeyboardMarkup(inline_keyboard=[[InlineKeyboardButton(text="Назад",
|
|
||||||
callback_data='clb_back_to_special_settings_message')]]) # Клавиатура для возврата к списку каталога настроек
|
|
||||||
back_btn_to_main = [InlineKeyboardButton(text="На главную", callback_data='clb_back_to_main')]
|
|
||||||
|
|
||||||
back_to_main = InlineKeyboardMarkup(inline_keyboard=[
|
back_to_main = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
[InlineKeyboardButton(text="На главную", callback_data='back_to_main')],
|
[InlineKeyboardButton(text="На главную", callback_data='back_to_main')],
|
||||||
@@ -68,6 +67,7 @@ back_to_main = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
|
|
||||||
main_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
main_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
[InlineKeyboardButton(text='Режим торговли', callback_data='clb_change_trading_mode'),
|
[InlineKeyboardButton(text='Режим торговли', callback_data='clb_change_trading_mode'),
|
||||||
|
InlineKeyboardButton(text='Режим свитч', callback_data='clb_change_switch_mode'),
|
||||||
InlineKeyboardButton(text='Тип маржи', callback_data='clb_change_margin_type')],
|
InlineKeyboardButton(text='Тип маржи', callback_data='clb_change_margin_type')],
|
||||||
|
|
||||||
[InlineKeyboardButton(text='Размер кредитного плеча', callback_data='clb_change_size_leverage'),
|
[InlineKeyboardButton(text='Размер кредитного плеча', callback_data='clb_change_size_leverage'),
|
||||||
@@ -120,9 +120,7 @@ additional_settings_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
|
|
||||||
trading_mode_markup = InlineKeyboardMarkup(inline_keyboard=[
|
trading_mode_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
[InlineKeyboardButton(text="Лонг", callback_data="trade_mode_long"),
|
[InlineKeyboardButton(text="Лонг", callback_data="trade_mode_long"),
|
||||||
InlineKeyboardButton(text="Шорт", callback_data="trade_mode_short")],
|
InlineKeyboardButton(text="Шорт", callback_data="trade_mode_short"),
|
||||||
|
|
||||||
[InlineKeyboardButton(text="Свитч", callback_data="trade_mode_switch"),
|
|
||||||
InlineKeyboardButton(text="Смарт", callback_data="trade_mode_smart")],
|
InlineKeyboardButton(text="Смарт", callback_data="trade_mode_smart")],
|
||||||
|
|
||||||
back_btn_list_settings,
|
back_btn_list_settings,
|
||||||
@@ -138,9 +136,11 @@ margin_type_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
])
|
])
|
||||||
|
|
||||||
trigger_markup = InlineKeyboardMarkup(inline_keyboard=[ # ИЗМЕНИТЬ НА INLINE
|
trigger_markup = InlineKeyboardMarkup(inline_keyboard=[ # ИЗМЕНИТЬ НА INLINE
|
||||||
[InlineKeyboardButton(text='Ручной', callback_data="clb_trigger_ruchnoy"),
|
[InlineKeyboardButton(text='Ручной', callback_data="clb_trigger_manual")],
|
||||||
InlineKeyboardButton(text='TradingView', callback_data="clb_trigger_tradingview")],
|
# [InlineKeyboardButton(text='TradingView', callback_data="clb_trigger_tradingview")],
|
||||||
[InlineKeyboardButton(text="Автоматический", callback_data="clb_trigger_auto")]
|
[InlineKeyboardButton(text="Автоматический", callback_data="clb_trigger_auto")],
|
||||||
|
back_btn_list_settings,
|
||||||
|
back_btn_to_main
|
||||||
])
|
])
|
||||||
|
|
||||||
buttons_yes_no_markup = InlineKeyboardMarkup(inline_keyboard=[
|
buttons_yes_no_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
@@ -185,7 +185,6 @@ def create_close_deal_markup(symbol: str) -> InlineKeyboardMarkup:
|
|||||||
def create_close_limit_markup(symbol: str) -> InlineKeyboardMarkup:
|
def create_close_limit_markup(symbol: str) -> InlineKeyboardMarkup:
|
||||||
return InlineKeyboardMarkup(inline_keyboard=[
|
return InlineKeyboardMarkup(inline_keyboard=[
|
||||||
[InlineKeyboardButton(text="Закрыть лимитный ордер", callback_data=f"close_limit:{symbol}")],
|
[InlineKeyboardButton(text="Закрыть лимитный ордер", callback_data=f"close_limit:{symbol}")],
|
||||||
[InlineKeyboardButton(text="Установить TP/SL", callback_data="clb_set_tp_sl_")],
|
|
||||||
back_btn_to_main
|
back_btn_to_main
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -194,10 +193,6 @@ timer_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|||||||
back_btn_to_main
|
back_btn_to_main
|
||||||
])
|
])
|
||||||
|
|
||||||
cancel_start_markup = InlineKeyboardMarkup(inline_keyboard=[
|
|
||||||
[InlineKeyboardButton(text="Отменить таймер", callback_data="clb_stop_timer")]
|
|
||||||
])
|
|
||||||
|
|
||||||
stop_choice_markup = InlineKeyboardMarkup(
|
stop_choice_markup = InlineKeyboardMarkup(
|
||||||
inline_keyboard=[
|
inline_keyboard=[
|
||||||
[
|
[
|
||||||
@@ -206,3 +201,15 @@ stop_choice_markup = InlineKeyboardMarkup(
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
buttons_on_off_markup_for_switch = InlineKeyboardMarkup(inline_keyboard=[ # ИЗМЕНИТЬ НА INLINE
|
||||||
|
[InlineKeyboardButton(text='Включить', callback_data="clb_on_switch"),
|
||||||
|
InlineKeyboardButton(text='Выключить', callback_data="clb_off_switch")],
|
||||||
|
[InlineKeyboardButton(text="Изменить состояние", callback_data="clb_switch_state")],
|
||||||
|
back_btn_to_main
|
||||||
|
])
|
||||||
|
|
||||||
|
switch_state_markup = InlineKeyboardMarkup(inline_keyboard=[
|
||||||
|
[InlineKeyboardButton(text='Long', callback_data="clb_long_switch"),
|
||||||
|
InlineKeyboardButton(text='Short', callback_data="clb_short_switch")],
|
||||||
|
])
|
@@ -12,7 +12,9 @@ import app.telegram.functions.condition_settings.settings as func_condition_sett
|
|||||||
import app.telegram.functions.additional_settings.settings as func_additional_settings
|
import app.telegram.functions.additional_settings.settings as func_additional_settings
|
||||||
|
|
||||||
import app.telegram.database.requests as rq
|
import app.telegram.database.requests as rq
|
||||||
import app.telegram.Keyboards.reply_keyboards as reply_markup
|
|
||||||
|
from app.services.Bybit.functions.balance import get_balance
|
||||||
|
from app.services.Bybit.functions.bybit_ws import run_ws_for_user
|
||||||
|
|
||||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||||
|
|
||||||
@@ -26,16 +28,11 @@ router = Router()
|
|||||||
async def start_message(message: Message) -> None:
|
async def start_message(message: Message) -> None:
|
||||||
"""
|
"""
|
||||||
Обработчик команды /start.
|
Обработчик команды /start.
|
||||||
Запускает WebSocket для пользователя и инициализирует нового пользователя в БД.
|
Инициализирует нового пользователя в БД.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
message (Message): Входящее сообщение с командой /start.
|
message (Message): Входящее сообщение с командой /start.
|
||||||
"""
|
"""
|
||||||
from BybitBot_API import run_ws_for_user
|
|
||||||
tg_id = message.from_user.id
|
|
||||||
asyncio.create_task(run_ws_for_user(tg_id, message))
|
|
||||||
logger.info(f"Получение event loop")
|
|
||||||
|
|
||||||
await rq.set_new_user_bybit_api(message.from_user.id)
|
await rq.set_new_user_bybit_api(message.from_user.id)
|
||||||
await func.start_message(message)
|
await func.start_message(message)
|
||||||
|
|
||||||
@@ -50,26 +47,14 @@ async def profile_message(message: Message) -> None:
|
|||||||
message (Message): Сообщение с текстом кнопки.
|
message (Message): Сообщение с текстом кнопки.
|
||||||
"""
|
"""
|
||||||
user = await rq.check_user(message.from_user.id)
|
user = await rq.check_user(message.from_user.id)
|
||||||
|
tg_id = message.from_user.id
|
||||||
if user:
|
balance = await get_balance(message.from_user.id, message)
|
||||||
|
if user and balance:
|
||||||
|
asyncio.create_task(run_ws_for_user(tg_id, message))
|
||||||
|
logger.info(f"Получение event loop")
|
||||||
await func.profile_message(message.from_user.username, message)
|
await func.profile_message(message.from_user.username, message)
|
||||||
|
|
||||||
|
|
||||||
@router.message(F.text == "Настройки")
|
|
||||||
async def settings_msg(message: Message) -> None:
|
|
||||||
"""
|
|
||||||
Обработчик кнопки 'Настройки'.
|
|
||||||
Проверяет пользователя и отображает меню настроек.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
message (Message): Сообщение с текстом кнопки.
|
|
||||||
"""
|
|
||||||
user = await rq.check_user(message.from_user.id)
|
|
||||||
|
|
||||||
if user:
|
|
||||||
await func.settings_message(message)
|
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "clb_start_chatbot_message")
|
@router.callback_query(F.data == "clb_start_chatbot_message")
|
||||||
async def clb_profile_msg(callback: CallbackQuery) -> None:
|
async def clb_profile_msg(callback: CallbackQuery) -> None:
|
||||||
"""
|
"""
|
||||||
@@ -81,12 +66,12 @@ async def clb_profile_msg(callback: CallbackQuery) -> None:
|
|||||||
callback (CallbackQuery): Полученный колбэк.
|
callback (CallbackQuery): Полученный колбэк.
|
||||||
"""
|
"""
|
||||||
user = await rq.check_user(callback.from_user.id)
|
user = await rq.check_user(callback.from_user.id)
|
||||||
|
balance = await get_balance(callback.from_user.id, callback.message)
|
||||||
first_name = callback.from_user.first_name or ""
|
first_name = callback.from_user.first_name or ""
|
||||||
last_name = callback.from_user.last_name or ""
|
last_name = callback.from_user.last_name or ""
|
||||||
username = f"{first_name} {last_name}".strip() or callback.from_user.username or "Пользователь"
|
username = f"{first_name} {last_name}".strip() or callback.from_user.username or "Пользователь"
|
||||||
|
|
||||||
if user:
|
if user and balance:
|
||||||
await func.profile_message(callback.from_user.username, callback.message)
|
await func.profile_message(callback.from_user.username, callback.message)
|
||||||
else:
|
else:
|
||||||
await rq.save_tg_id_new_user(callback.from_user.id)
|
await rq.save_tg_id_new_user(callback.from_user.id)
|
||||||
@@ -94,13 +79,9 @@ async def clb_profile_msg(callback: CallbackQuery) -> None:
|
|||||||
await func_main_settings.reg_new_user_default_main_settings(callback.from_user.id, callback.message)
|
await func_main_settings.reg_new_user_default_main_settings(callback.from_user.id, callback.message)
|
||||||
await func_rmanagement_settings.reg_new_user_default_risk_management_settings(callback.from_user.id,
|
await func_rmanagement_settings.reg_new_user_default_risk_management_settings(callback.from_user.id,
|
||||||
callback.message)
|
callback.message)
|
||||||
await func_condition_settings.reg_new_user_default_condition_settings(callback.from_user.id, callback.message)
|
await func_condition_settings.reg_new_user_default_condition_settings(callback.from_user.id)
|
||||||
await func_additional_settings.reg_new_user_default_additional_settings(callback.from_user.id, callback.message)
|
await func_additional_settings.reg_new_user_default_additional_settings(callback.from_user.id, callback.message)
|
||||||
|
|
||||||
await callback.message.answer(f'Здравствуйте, {username}!', reply_markup=reply_markup.base_buttons_markup)
|
|
||||||
|
|
||||||
await func.profile_message(username, callback.message)
|
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
@@ -166,7 +147,7 @@ async def clb_change_condition_message(callback: CallbackQuery, state: FSMContex
|
|||||||
callback (CallbackQuery): полученный колбэк.
|
callback (CallbackQuery): полученный колбэк.
|
||||||
state (FSMContext): текущее состояние FSM.
|
state (FSMContext): текущее состояние FSM.
|
||||||
"""
|
"""
|
||||||
await func_condition_settings.main_settings_message(callback.from_user.id, callback.message, state)
|
await func_condition_settings.main_settings_message(callback.from_user.id, callback.message)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
@@ -187,6 +168,7 @@ async def clb_change_additional_message(callback: CallbackQuery, state: FSMConte
|
|||||||
|
|
||||||
# Конкретные настройки каталогов
|
# Конкретные настройки каталогов
|
||||||
list_main_settings = ['clb_change_trading_mode',
|
list_main_settings = ['clb_change_trading_mode',
|
||||||
|
'clb_change_switch_mode',
|
||||||
'clb_change_margin_type',
|
'clb_change_margin_type',
|
||||||
'clb_change_size_leverage',
|
'clb_change_size_leverage',
|
||||||
'clb_change_starting_quantity',
|
'clb_change_starting_quantity',
|
||||||
@@ -210,6 +192,8 @@ async def clb_main_settings_msg(callback: CallbackQuery, state: FSMContext) -> N
|
|||||||
match callback.data:
|
match callback.data:
|
||||||
case 'clb_change_trading_mode':
|
case 'clb_change_trading_mode':
|
||||||
await func_main_settings.trading_mode_message(callback.message, state)
|
await func_main_settings.trading_mode_message(callback.message, state)
|
||||||
|
case 'clb_change_switch_mode':
|
||||||
|
await func_main_settings.switch_mode_enabled_message(callback.message, state)
|
||||||
case 'clb_change_margin_type':
|
case 'clb_change_margin_type':
|
||||||
await func_main_settings.margin_type_message(callback.message, state)
|
await func_main_settings.margin_type_message(callback.message, state)
|
||||||
case 'clb_change_size_leverage':
|
case 'clb_change_size_leverage':
|
||||||
@@ -280,7 +264,7 @@ async def clb_condition_settings_msg(callback: CallbackQuery, state: FSMContext)
|
|||||||
try:
|
try:
|
||||||
match callback.data:
|
match callback.data:
|
||||||
case 'clb_change_trigger':
|
case 'clb_change_trigger':
|
||||||
await func_condition_settings.trigger_message(callback.message, state)
|
await func_condition_settings.trigger_message(callback.from_user.id, callback.message, state)
|
||||||
case 'clb_change_timer':
|
case 'clb_change_timer':
|
||||||
await func_condition_settings.timer_message(callback.from_user.id, callback.message, state)
|
await func_condition_settings.timer_message(callback.from_user.id, callback.message, state)
|
||||||
case 'clb_change_filter_volatility':
|
case 'clb_change_filter_volatility':
|
||||||
|
Reference in New Issue
Block a user