diff --git a/app/telegram/functions/condition_settings/settings.py b/app/telegram/functions/condition_settings/settings.py
index 3d9e571..79fc57f 100644
--- a/app/telegram/functions/condition_settings/settings.py
+++ b/app/telegram/functions/condition_settings/settings.py
@@ -1,6 +1,21 @@
import app.telegram.Keyboards.inline_keyboards as inline_markup
-
+from aiogram import Router, F
+from aiogram.types import Message, CallbackQuery
+from aiogram.fsm.context import FSMContext
import app.telegram.database.requests as rq
+from aiogram.fsm.state import State, StatesGroup
+
+condition_settings_router = Router()
+
+
+class condition_settings(StatesGroup):
+ trigger = State()
+ timer = State()
+ volatilty = State()
+ volume = State()
+ integration = State()
+ use_tv_signal = State()
+
async def reg_new_user_default_condition_settings(id, message):
tg_id = id
@@ -9,11 +24,12 @@ async def reg_new_user_default_condition_settings(id, message):
await rq.set_new_user_default_condition_settings(tg_id, trigger)
+
async def main_settings_message(id, message, state):
text = """ Условия запуска
- Триггер: Ручной запуск / Сигнал TradingView / Полностью автоматический
-- Фильтр времени: диапазон по дням недели и времени суток
+- Таймер: установить таймер / остановить таймер
- Фильтр волатильности / объёма: включить/отключить
- Интеграции и внешние сигналы:
- Использовать сигналы TradingView: да / нет
@@ -21,7 +37,8 @@ async def main_settings_message(id, message, state):
- Webhook URL для сигналов (если используется TradingView):
"""
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.condition_settings_markup)
-
+
+
async def trigger_message(message, state):
text = '''Триггер
@@ -29,13 +46,52 @@ async def trigger_message(message, state):
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.trigger_markup)
-async def filter_time_message(message, state):
- text = '''Фильтр времени
- ???
- '''
+async def timer_message(id,message: Message, state: FSMContext):
+ await state.set_state(condition_settings.timer)
+
+ timer_info = await rq.get_user_timer(id)
+ if timer_info is None:
+ await message.answer("Таймер не установлен.", reply_markup=inline_markup.timer_markup)
+ return
+
+ await message.answer(
+ f"Таймер: {timer_info['timer_minutes']} мин\n"
+ f"Осталось: {timer_info['remaining_minutes']} мин\n",
+ reply_markup=inline_markup.timer_markup
+ )
+
+
+@condition_settings_router.callback_query(F.data == "clb_set_timer")
+async def set_timer_callback(callback: CallbackQuery, state: FSMContext):
+ await state.set_state(condition_settings.timer) # состояние для ввода времени
+ await callback.message.answer("Введите время работы в минутах (например, 60):")
+ await callback.answer()
+
+
+@condition_settings_router.message(condition_settings.timer)
+async def process_timer_input(message: Message, state: FSMContext):
+ try:
+ minutes = int(message.text)
+ if minutes <= 0:
+ await message.reply("Введите число больше нуля.")
+ return
+
+ # Сохраняем в базу или память время таймера для пользователя
+ await rq.update_user_timer(message.from_user.id, minutes)
+
+ await message.answer(f"Таймер установлен на {minutes} минут.", reply_markup=inline_markup.back_to_main)
+ await state.clear()
+ except ValueError:
+ await message.reply("Пожалуйста, введите корректное число.")
+
+
+@condition_settings_router.callback_query(F.data == "clb_stop_timer")
+async def stop_timer_callback(callback: CallbackQuery):
+ await rq.update_user_timer(callback.from_user.id, 0) # обнуляем таймер
+ await callback.message.answer("Таймер остановлен.", reply_markup=inline_markup.back_to_main)
+ await callback.answer()
- await message.answer(text=text)
async def filter_volatility_message(message, state):
text = '''Фильтр волатильности
@@ -44,6 +100,7 @@ async def filter_volatility_message(message, state):
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_on_off_markup)
+
async def external_cues_message(message, state):
text = '''Внешние сигналы
@@ -51,6 +108,7 @@ async def external_cues_message(message, state):
await message.answer(text=text, parse_mode='html', reply_markup=None)
+
async def trading_cues_message(message, state):
text = '''Использование сигналов
@@ -58,16 +116,16 @@ async def trading_cues_message(message, state):
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_yes_no_markup)
+
async def webhook_message(message, state):
text = '''Скиньте ссылку на webhook (если есть trading view): '''
await message.answer(text=text, parse_mode='html')
-
+
+
async def ai_analytics_message(message, state):
text = '''ИИ - Аналитика
Описание... '''
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_yes_no_markup)
-
-