forked from kodorvan/stcs
The entire database has been changed to PostgresSQL. The entire code has been updated.
This commit is contained in:
174
app/telegram/handlers/main_settings/conditional_settings.py
Normal file
174
app/telegram/handlers/main_settings/conditional_settings.py
Normal file
@@ -0,0 +1,174 @@
|
||||
import logging.config
|
||||
|
||||
from aiogram import Router
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.types import CallbackQuery, Message
|
||||
|
||||
import app.telegram.keyboards.inline as kbi
|
||||
import database.request as rq
|
||||
from app.helper_functions import is_int_for_timer
|
||||
from app.telegram.states.states import ConditionalSettingsState
|
||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||
|
||||
logging.config.dictConfig(LOGGING_CONFIG)
|
||||
logger = logging.getLogger("conditional_settings")
|
||||
|
||||
router_conditional_settings = Router(name="conditional_settings")
|
||||
|
||||
|
||||
@router_conditional_settings.callback_query(
|
||||
lambda c: c.data == "start_timer" or c.data == "stop_timer"
|
||||
)
|
||||
async def timer(callback_query: CallbackQuery, state: FSMContext):
|
||||
"""
|
||||
Handles callback queries starting with 'start_timer' or 'stop_timer'.
|
||||
"""
|
||||
try:
|
||||
await state.clear()
|
||||
if callback_query.data == "start_timer":
|
||||
await state.set_state(ConditionalSettingsState.start_timer_state)
|
||||
msg = await callback_query.message.edit_text(
|
||||
"Введите время в минутах для старта торговли:",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
await state.update_data(prompt_message_id=msg.message_id)
|
||||
elif callback_query.data == "stop_timer":
|
||||
await state.set_state(ConditionalSettingsState.stop_timer_state)
|
||||
msg = await callback_query.message.edit_text(
|
||||
"Введите время в минутах для остановки торговли:",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
await state.update_data(prompt_message_id=msg.message_id)
|
||||
else:
|
||||
await callback_query.answer(
|
||||
text="Произошла ошибка. Пожалуйста, попробуйте позже."
|
||||
)
|
||||
except Exception as e:
|
||||
await callback_query.answer(
|
||||
text="Произошла ошибка. Пожалуйста, попробуйте позже."
|
||||
)
|
||||
logger.error(
|
||||
"Error processing command timer for user %s: %s",
|
||||
callback_query.from_user.id,
|
||||
e,
|
||||
)
|
||||
|
||||
|
||||
@router_conditional_settings.message(ConditionalSettingsState.start_timer_state)
|
||||
async def start_timer(message: Message, state: FSMContext):
|
||||
"""
|
||||
Handles the start_timer state of the Finite State Machine.
|
||||
"""
|
||||
try:
|
||||
try:
|
||||
data = await state.get_data()
|
||||
if "prompt_message_id" in data:
|
||||
prompt_message_id = data["prompt_message_id"]
|
||||
await message.bot.delete_message(
|
||||
chat_id=message.chat.id, message_id=prompt_message_id
|
||||
)
|
||||
await message.delete()
|
||||
except Exception as e:
|
||||
if "message to delete not found" in str(e).lower():
|
||||
pass # Ignore this error
|
||||
else:
|
||||
raise e
|
||||
|
||||
get_start_timer = message.text
|
||||
value = is_int_for_timer(get_start_timer)
|
||||
|
||||
if value is False:
|
||||
await message.answer(
|
||||
"Ошибка: введите валидное число.",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
logger.debug(
|
||||
"User %s input invalid (not an valid number): %s",
|
||||
message.from_user.id,
|
||||
get_start_timer,
|
||||
)
|
||||
return
|
||||
|
||||
req = await rq.set_start_timer(
|
||||
tg_id=message.from_user.id, timer_start=int(get_start_timer)
|
||||
)
|
||||
|
||||
if req:
|
||||
await message.answer(
|
||||
"Таймер успешно установлен.",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
else:
|
||||
await message.answer(
|
||||
"Произошла ошибка. Пожалуйста, попробуйте позже.",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
|
||||
await state.clear()
|
||||
except Exception as e:
|
||||
await message.answer(text="Произошла ошибка. Пожалуйста, попробуйте позже.")
|
||||
logger.error(
|
||||
"Error processing command start_timer for user %s: %s",
|
||||
message.from_user.id,
|
||||
e,
|
||||
)
|
||||
|
||||
|
||||
@router_conditional_settings.message(ConditionalSettingsState.stop_timer_state)
|
||||
async def stop_timer(message: Message, state: FSMContext):
|
||||
"""
|
||||
Handles the stop_timer state of the Finite State Machine.
|
||||
"""
|
||||
try:
|
||||
try:
|
||||
data = await state.get_data()
|
||||
if "prompt_message_id" in data:
|
||||
prompt_message_id = data["prompt_message_id"]
|
||||
await message.bot.delete_message(
|
||||
chat_id=message.chat.id, message_id=prompt_message_id
|
||||
)
|
||||
await message.delete()
|
||||
except Exception as e:
|
||||
if "message to delete not found" in str(e).lower():
|
||||
pass # Ignore this error
|
||||
else:
|
||||
raise e
|
||||
|
||||
get_stop_timer = message.text
|
||||
value = is_int_for_timer(get_stop_timer)
|
||||
|
||||
if value is False:
|
||||
await message.answer(
|
||||
"Ошибка: введите валидное число.",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
logger.debug(
|
||||
"User %s input invalid (not an valid number): %s",
|
||||
message.from_user.id,
|
||||
get_stop_timer,
|
||||
)
|
||||
return
|
||||
|
||||
req = await rq.set_stop_timer(
|
||||
tg_id=message.from_user.id, timer_end=int(get_stop_timer)
|
||||
)
|
||||
|
||||
if req:
|
||||
await message.answer(
|
||||
"Таймер успешно установлен.",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
else:
|
||||
await message.answer(
|
||||
"Произошла ошибка. Пожалуйста, попробуйте позже.",
|
||||
reply_markup=kbi.back_to_conditions,
|
||||
)
|
||||
|
||||
await state.clear()
|
||||
except Exception as e:
|
||||
await message.answer(text="Произошла ошибка. Пожалуйста, попробуйте позже.")
|
||||
logger.error(
|
||||
"Error processing command stop_timer for user %s: %s",
|
||||
message.from_user.id,
|
||||
e,
|
||||
)
|
Reference in New Issue
Block a user