develop #3
@@ -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 = """ <b>Условия запуска</b>
|
||||
|
||||
<b>- Триггер:</b> Ручной запуск / Сигнал TradingView / Полностью автоматический
|
||||
<b>- Фильтр времени: </b> диапазон по дням недели и времени суток
|
||||
<b>- Таймер: </b> установить таймер / остановить таймер
|
||||
<b>- Фильтр волатильности / объёма: </b> включить/отключить
|
||||
<b>- Интеграции и внешние сигналы: </b>
|
||||
<b>- Использовать сигналы TradingView:</b> да / нет
|
||||
@@ -22,6 +38,7 @@ async def main_settings_message(id, message, state):
|
||||
"""
|
||||
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 = '''<b>Внешние сигналы</b>
|
||||
|
||||
@@ -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 = '''<b>Использование сигналов</b>
|
||||
|
||||
@@ -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 = '''Скиньте ссылку на <b>webhook</b> (если есть trading view): '''
|
||||
|
||||
await message.answer(text=text, parse_mode='html')
|
||||
|
||||
|
||||
async def ai_analytics_message(message, state):
|
||||
text = '''<b>ИИ - Аналитика</b>
|
||||
|
||||
Описание... '''
|
||||
|
||||
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_yes_no_markup)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user