forked from kodorvan/stcs
Updated
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import logging.config
|
import logging.config
|
||||||
|
import asyncio
|
||||||
from aiogram import F, Router
|
from aiogram import F, Router
|
||||||
from aiogram.filters import CommandStart
|
from aiogram.filters import CommandStart
|
||||||
from aiogram.types import Message, CallbackQuery
|
from aiogram.types import Message, CallbackQuery
|
||||||
@@ -13,23 +13,42 @@ import app.telegram.functions.additional_settings.settings as func_additional_se
|
|||||||
|
|
||||||
import app.telegram.database.requests as rq
|
import app.telegram.database.requests as rq
|
||||||
import app.telegram.Keyboards.reply_keyboards as reply_markup
|
import app.telegram.Keyboards.reply_keyboards as reply_markup
|
||||||
|
|
||||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||||
|
|
||||||
logging.config.dictConfig(LOGGING_CONFIG)
|
logging.config.dictConfig(LOGGING_CONFIG)
|
||||||
logger = logging.getLogger("handlers")
|
logger = logging.getLogger("handlers")
|
||||||
|
|
||||||
|
|
||||||
router = Router()
|
router = Router()
|
||||||
|
|
||||||
|
|
||||||
@router.message(CommandStart())
|
@router.message(CommandStart())
|
||||||
async def start_message(message: Message):
|
async def start_message(message: Message) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик команды /start.
|
||||||
|
Запускает WebSocket для пользователя и инициализирует нового пользователя в БД.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
@router.message(F.text == "👤 Профиль")
|
@router.message(F.text == "👤 Профиль")
|
||||||
async def profile_message(message: Message):
|
async def profile_message(message: Message) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик кнопки 'Профиль'.
|
||||||
|
Проверяет существование пользователя и отображает профиль.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
message (Message): Сообщение с текстом кнопки.
|
||||||
|
"""
|
||||||
user = await rq.check_user(message.from_user.id)
|
user = await rq.check_user(message.from_user.id)
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
@@ -37,7 +56,14 @@ async def profile_message(message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@router.message(F.text == "Настройки")
|
@router.message(F.text == "Настройки")
|
||||||
async def settings_msg(message: Message):
|
async def settings_msg(message: Message) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик кнопки 'Настройки'.
|
||||||
|
Проверяет пользователя и отображает меню настроек.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
message (Message): Сообщение с текстом кнопки.
|
||||||
|
"""
|
||||||
user = await rq.check_user(message.from_user.id)
|
user = await rq.check_user(message.from_user.id)
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
@@ -45,17 +71,20 @@ async def settings_msg(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):
|
async def clb_profile_msg(callback: CallbackQuery) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик колбэка 'clb_start_chatbot_message'.
|
||||||
|
Если пользователь есть в БД — показывает профиль,
|
||||||
|
иначе регистрирует нового пользователя и инициализирует настройки.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): Полученный колбэк.
|
||||||
|
"""
|
||||||
user = await rq.check_user(callback.from_user.id)
|
user = await rq.check_user(callback.from_user.id)
|
||||||
|
|
||||||
username = ''
|
first_name = callback.from_user.first_name or ""
|
||||||
|
last_name = callback.from_user.last_name or ""
|
||||||
if callback.from_user.first_name == None:
|
username = f"{first_name} {last_name}".strip() or callback.from_user.username or "Пользователь"
|
||||||
username = callback.from_user.last_name
|
|
||||||
elif callback.from_user.last_name == None:
|
|
||||||
username = callback.from_user.first_name
|
|
||||||
else:
|
|
||||||
username = f'{callback.from_user.first_name} {callback.from_user.last_name}'
|
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
await func.profile_message(callback.from_user.username, callback.message)
|
await func.profile_message(callback.from_user.username, callback.message)
|
||||||
@@ -75,44 +104,82 @@ async def clb_profile_msg(callback: CallbackQuery):
|
|||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
# Настройки торговли
|
|
||||||
@router.callback_query(F.data == "clb_settings_message")
|
@router.callback_query(F.data == "clb_settings_message")
|
||||||
async def clb_settings_msg(callback: CallbackQuery):
|
async def clb_settings_msg(callback: CallbackQuery) -> None:
|
||||||
|
"""
|
||||||
|
Показать главное меню настроек.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
"""
|
||||||
await func.settings_message(callback.message)
|
await func.settings_message(callback.message)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "clb_back_to_special_settings_message")
|
@router.callback_query(F.data == "clb_back_to_special_settings_message")
|
||||||
async def clb_back_to_settings_msg(callback: CallbackQuery):
|
async def clb_back_to_settings_msg(callback: CallbackQuery) -> None:
|
||||||
|
"""
|
||||||
|
Вернуть пользователя к меню специальных настроек.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
"""
|
||||||
await func.settings_message(callback.message)
|
await func.settings_message(callback.message)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "clb_change_main_settings")
|
@router.callback_query(F.data == "clb_change_main_settings")
|
||||||
async def clb_change_main_settings_message(callback: CallbackQuery, state: FSMContext):
|
async def clb_change_main_settings_message(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Открыть меню изменения главных настроек.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
state (FSMContext): текущее состояние FSM.
|
||||||
|
"""
|
||||||
await func_main_settings.main_settings_message(callback.from_user.id, callback.message, state)
|
await func_main_settings.main_settings_message(callback.from_user.id, callback.message, state)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "clb_change_risk_management_settings")
|
@router.callback_query(F.data == "clb_change_risk_management_settings")
|
||||||
async def clb_change_risk_management_message(callback: CallbackQuery):
|
async def clb_change_risk_management_message(callback: CallbackQuery) -> None:
|
||||||
|
"""
|
||||||
|
Открыть меню изменения настроек управления рисками.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
"""
|
||||||
await func_rmanagement_settings.main_settings_message(callback.from_user.id, callback.message)
|
await func_rmanagement_settings.main_settings_message(callback.from_user.id, callback.message)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "clb_change_condition_settings")
|
@router.callback_query(F.data == "clb_change_condition_settings")
|
||||||
async def clb_change_condition_message(callback: CallbackQuery, state: FSMContext):
|
async def clb_change_condition_message(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Открыть меню изменения настроек условий.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
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, state)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "clb_change_additional_settings")
|
@router.callback_query(F.data == "clb_change_additional_settings")
|
||||||
async def clb_change_additional_message(callback: CallbackQuery, state: FSMContext):
|
async def clb_change_additional_message(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Открыть меню изменения дополнительных настроек.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
state (FSMContext): текущее состояние FSM.
|
||||||
|
"""
|
||||||
await func_additional_settings.main_settings_message(callback.from_user.id, callback.message, state)
|
await func_additional_settings.main_settings_message(callback.from_user.id, callback.message, state)
|
||||||
|
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
@@ -129,7 +196,14 @@ list_main_settings = ['clb_change_trading_mode',
|
|||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.in_(list_main_settings))
|
@router.callback_query(F.data.in_(list_main_settings))
|
||||||
async def clb_main_settings_msg(callback: CallbackQuery, state: FSMContext):
|
async def clb_main_settings_msg(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик колбэков изменения главных настроек с dispatch через match-case.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
state (FSMContext): текущее состояние FSM.
|
||||||
|
"""
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -158,7 +232,14 @@ list_risk_management_settings = ['clb_change_price_profit',
|
|||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.in_(list_risk_management_settings))
|
@router.callback_query(F.data.in_(list_risk_management_settings))
|
||||||
async def clb_risk_management_settings_msg(callback: CallbackQuery, state: FSMContext):
|
async def clb_risk_management_settings_msg(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик изменений настроек управления рисками.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
state (FSMContext): текущее состояние FSM.
|
||||||
|
"""
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -186,7 +267,14 @@ list_condition_settings = ['clb_change_trigger',
|
|||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.in_(list_condition_settings))
|
@router.callback_query(F.data.in_(list_condition_settings))
|
||||||
async def clb_condition_settings_msg(callback: CallbackQuery, state: FSMContext):
|
async def clb_condition_settings_msg(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик изменений настроек условий трейдинга.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
state (FSMContext): текущее состояние FSM.
|
||||||
|
"""
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -216,7 +304,14 @@ list_additional_settings = ['clb_change_save_pattern',
|
|||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.in_(list_additional_settings))
|
@router.callback_query(F.data.in_(list_additional_settings))
|
||||||
async def clb_additional_settings_msg(callback: CallbackQuery, state: FSMContext):
|
async def clb_additional_settings_msg(callback: CallbackQuery, state: FSMContext) -> None:
|
||||||
|
"""
|
||||||
|
Обработчик дополнительных настроек бота.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
callback (CallbackQuery): полученный колбэк.
|
||||||
|
state (FSMContext): текущее состояние FSM.
|
||||||
|
"""
|
||||||
await callback.answer()
|
await callback.answer()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
Reference in New Issue
Block a user