Added timer
This commit is contained in:
@@ -1,6 +1,21 @@
|
|||||||
import app.telegram.Keyboards.inline_keyboards as inline_markup
|
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
|
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):
|
async def reg_new_user_default_condition_settings(id, message):
|
||||||
tg_id = id
|
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)
|
await rq.set_new_user_default_condition_settings(tg_id, trigger)
|
||||||
|
|
||||||
|
|
||||||
async def main_settings_message(id, message, state):
|
async def main_settings_message(id, message, state):
|
||||||
text = """ <b>Условия запуска</b>
|
text = """ <b>Условия запуска</b>
|
||||||
|
|
||||||
<b>- Триггер:</b> Ручной запуск / Сигнал TradingView / Полностью автоматический
|
<b>- Триггер:</b> Ручной запуск / Сигнал TradingView / Полностью автоматический
|
||||||
<b>- Фильтр времени: </b> диапазон по дням недели и времени суток
|
<b>- Таймер: </b> установить таймер / остановить таймер
|
||||||
<b>- Фильтр волатильности / объёма: </b> включить/отключить
|
<b>- Фильтр волатильности / объёма: </b> включить/отключить
|
||||||
<b>- Интеграции и внешние сигналы: </b>
|
<b>- Интеграции и внешние сигналы: </b>
|
||||||
<b>- Использовать сигналы TradingView:</b> да / нет
|
<b>- Использовать сигналы TradingView:</b> да / нет
|
||||||
@@ -21,7 +37,8 @@ async def main_settings_message(id, message, state):
|
|||||||
<b>- Webhook URL для сигналов (если используется TradingView): </b>
|
<b>- Webhook URL для сигналов (если используется TradingView): </b>
|
||||||
"""
|
"""
|
||||||
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.condition_settings_markup)
|
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.condition_settings_markup)
|
||||||
|
|
||||||
|
|
||||||
async def trigger_message(message, state):
|
async def trigger_message(message, state):
|
||||||
text = '''Триггер
|
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)
|
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):
|
async def filter_volatility_message(message, state):
|
||||||
text = '''Фильтр волатильности
|
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)
|
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_on_off_markup)
|
||||||
|
|
||||||
|
|
||||||
async def external_cues_message(message, state):
|
async def external_cues_message(message, state):
|
||||||
text = '''<b>Внешние сигналы</b>
|
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)
|
await message.answer(text=text, parse_mode='html', reply_markup=None)
|
||||||
|
|
||||||
|
|
||||||
async def trading_cues_message(message, state):
|
async def trading_cues_message(message, state):
|
||||||
text = '''<b>Использование сигналов</b>
|
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)
|
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_yes_no_markup)
|
||||||
|
|
||||||
|
|
||||||
async def webhook_message(message, state):
|
async def webhook_message(message, state):
|
||||||
text = '''Скиньте ссылку на <b>webhook</b> (если есть trading view): '''
|
text = '''Скиньте ссылку на <b>webhook</b> (если есть trading view): '''
|
||||||
|
|
||||||
await message.answer(text=text, parse_mode='html')
|
await message.answer(text=text, parse_mode='html')
|
||||||
|
|
||||||
|
|
||||||
async def ai_analytics_message(message, state):
|
async def ai_analytics_message(message, state):
|
||||||
text = '''<b>ИИ - Аналитика</b>
|
text = '''<b>ИИ - Аналитика</b>
|
||||||
|
|
||||||
Описание... '''
|
Описание... '''
|
||||||
|
|
||||||
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_yes_no_markup)
|
await message.answer(text=text, parse_mode='html', reply_markup=inline_markup.buttons_yes_no_markup)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user