69 lines
3.0 KiB
Python
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)
|
|
|
|
|