Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from aiogram import Router, F
- from aiogram.filters import Command, StateFilter
- from aiogram.fsm.context import FSMContext
- from aiogram.types import FSInputFile, ReplyKeyboardMarkup, KeyboardButton, Message, CallbackQuery, ReplyKeyboardRemove, InlineKeyboardButton
- from aiogram.fsm.state import State, StatesGroup
- from datetime import datetime
- from keyboards.simple_row import make_row_keyboard
- from aiogram.utils.keyboard import InlineKeyboardBuilder
- from aiogram.filters.callback_data import CallbackData
- from aiogram.types.inline_keyboard_markup import InlineKeyboardMarkup
- from datetime import datetime
- from handlers.register import next_reg
- from aiogram.utils.media_group import MediaGroupBuilder
- from aiogram.methods.send_media_group import SendMediaGroup
- import json
- # from register import next_reg # menu
- class MyCallback(CallbackData, prefix = "mycb"):
- day: int
- foo : str
- task_today = {
- 1:[1, 2],
- 2:[3]
- }
- router = Router()
- class UserState(StatesGroup):
- user_reg = State()
- class UserSolving(StatesGroup):
- user_solving = State()
- class UserState(StatesGroup):
- user_reg = State()
- @router.message(UserState.user_reg, F.text.lower() == "домой")
- async def task0(message:Message):
- await message.answer(
- text="Вы дома!",
- reply_markup=make_row_keyboard(["Назад"])
- )
- @router.message(UserState.user_reg, F.text.lower() == "задача моего дня")
- async def task_dayly(message: Message, state: FSMContext):
- user_data = await state.get_data()
- print("DATA: ", user_data["user"])
- # return
- user_datetime = user_data["user"]["date"]
- builder = InlineKeyboardBuilder()
- # path_q = "../data_q/img.jpg"
- #----------------------------------------------------------------------------------------------------------
- img_q = FSInputFile("../data_q/img.png")
- result = await message.answer_photo(
- photo= img_q,
- caption="pic cap"
- )
- #----------------------------------------------------------------------------------------------------------
- print(result.photo[-1].file_id)
- # album_builder.add(
- # type="photo",
- # media= img_q.photo[-1].file_id
- # # caption="Подпись к конкретному медиа"
- #
- # )
- if user_datetime == 1:
- for i in task_today[user_datetime]:
- if(i not in user_data["user"]["solved_task"]):
- builder.add(InlineKeyboardButton(
- text="Нажми меня " + str(i),
- callback_data=MyCallback(day=i, foo="days").pack()
- ))
- await message.answer(
- "Отлично, ваши задачи на сегодня:",
- reply_markup=builder.as_markup()
- )
- # await message.answer(
- # text="Вы дома!",
- # reply_markup=make_row_keyboard(["Назад"])
- # )
- task_data = {
- 1 : {"header" : "header ",
- "text" : "pisikaki text",
- "answer" : "pipiski",
- "load_photo": "",
- "load_video": ""
- },
- 2 : {"header" : "header2 ",
- "text" : "pisikaki text chileen",
- "answer" : "chileeen",
- "load_photo": "",
- "load_video": ""
- }
- }
- @router.callback_query(MyCallback.filter(F.foo == "days"))
- async def send_task(callback: CallbackQuery, state : FSMContext, callback_data: MyCallback):
- await callback.message.answer(text="Вы на задаче №" + str(callback_data.day))
- # for i in task_data[callback_data.day]:
- # print(i)
- #ПОФИКСИТЬ НА task_today[callback_data.day]-----------------
- today_quest = task_data[callback_data.day]
- text_quest = today_quest["header"] + "\n" + today_quest["text"] + "\nнапиши ответ"
- # image_from_pc = FSInputFile("../data_q/img.png")
- if today_quest["text"] == "":
- media_group = MediaGroupBuilder(
- caption="text_quest"
- )
- media_group.add_photo(
- media="https://loremflickr.com/320/240"
- )
- await callback.message.answer_media_group(
- # media=album_builder.build()
- media = media_group.build()
- )
- await callback.message.answer(text=text_quest)
- user_data = await state.get_data()
- x = {"task_n": callback_data.day}
- user_data["user"].update(x)
- await state.update_data(user_data)
- await state.set_state(UserSolving.user_solving)
- await callback.answer()
- # Решаем конкретную задачу по стейту новому
- # Тут проверять ответ
- @router.message(UserSolving.user_solving, Command("cancel"))
- async def solving(message:Message, state : FSMContext):
- user_data = await state.get_data()
- del user_data["user"]["task_n"]
- print("HUETA ", user_data)
- await state.set_state(UserState.user_reg)
- await next_reg(message)
- @router.message(UserSolving.user_solving)
- async def solving(message:Message, state : FSMContext):
- user_data = await state.get_data()
- print("1 - CALLBACCK USER DATA: ", user_data, type(user_data["user"]))
- if(message.text.lower() == task_data[user_data["user"]["task_n"]]["answer"]):
- kb = [
- [KeyboardButton(text="Перейти к задачам")]
- ]
- keyboard = ReplyKeyboardMarkup(keyboard=kb)
- await message.reply(
- "Поздравляю! Это правильный ответ. Вернуться в меню(/menu)",
- reply_markup=keyboard
- )
- #user_data["user"]
- print("Task_n: ", user_data["user"]["task_n"])
- # new_u_data = {user_data["user"]["solving_time"]
- user_data["user"]["solving_time"].append(str(datetime.now()))
- user_data["user"]["solved_task"].append(user_data["user"]["task_n"])
- del user_data["user"]["task_n"]
- await state.set_state(UserState.user_reg)
- user_data = await state.get_data()
- print(user_data)
- await next_reg(message)
- js_data = json.dumps(user_data["user"])
- print("js_data: ", js_data)
- else:
- await message.reply(
- text="Неверный ответ! Попробуйте снова"
- )
Advertisement
Add Comment
Please, Sign In to add comment