Files
2025-10-29 21:46:06 +03:00

69 lines
3.0 KiB
Python

from aiogram import Dispatcher, Bot
from aiogram.types import Message
from aiogram.filters import Command
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext
import logging
from .DB import get_tasks, add_task, delete_tasks_by_who
from storage.message_storage import save_message
from datetime import datetime
logger = logging.getLogger(__name__)
class TodoForm(StatesGroup):
waiting_for_task = State()
def register_handlers(dp: Dispatcher, state, bot: Bot):
# /todos — начать добавление задачи
@dp.message(Command("todos"))
async def cmd_todos(message: Message, state: FSMContext):
save_message(message.chat.id, message.message_id) # сохраняем сообщение
await message.answer("Введите текст задачи:")
await state.set_state(TodoForm.waiting_for_task)
# обработка текста задачи
@dp.message(TodoForm.waiting_for_task)
async def process_task(message: Message, state: FSMContext):
save_message(message.chat.id, message.message_id) # сохраняем сообщение
task_text = message.text
user_id = message.from_user.id
try:
created_at = datetime.now().strftime("%d.%m.%Y %H:%M:%S")
add_task(user_id, task_text, created_at)
reply = await message.answer(f"Задача сохранена ✅\n{task_text}")
save_message(reply.chat.id, reply.message_id) # сохраняем ответ бота
except Exception as e:
logger.error(f"Ошибка при добавлении задачи: {e}")
reply = await message.answer("Не удалось сохранить задачу ❌")
save_message(reply.chat.id, reply.message_id)
finally:
await state.clear()
# /todor — показать список задач
@dp.message(Command("todor"))
async def cmd_todor(message: Message):
save_message(message.chat.id, message.message_id) # сохраняем сообщение
user_id = message.from_user.id
try:
tasks = get_tasks(user_id)
if not tasks:
reply = await message.answer("У вас пока нет задач 📝")
save_message(reply.chat.id, reply.message_id)
return
text = "Ваши задачи:\n\n"
for tid, task, created_at in tasks:
text += f"{task} (создана {created_at})\n"
reply = await message.answer(text)
save_message(reply.chat.id, reply.message_id)
except Exception as e:
logger.error(f"Ошибка при чтении задач: {e}")
reply = await message.answer("Не удалось получить список задач ❌")
save_message(reply.chat.id, reply.message_id)
@dp.message(Command("todod"))
async def del_todo(message: Message):
delete_tasks_by_who(message.from_user.id)