MVP
This commit is contained in:
@ -1,2 +1,4 @@
|
||||
from .menu import menu_router
|
||||
from .test import test_router
|
||||
from .test import test_router
|
||||
from .teacher import teacher_router
|
||||
from .student import student_router
|
13
blueprints/student.py
Normal file
13
blueprints/student.py
Normal file
@ -0,0 +1,13 @@
|
||||
from vkwave.bots import DefaultRouter, SimpleBotEvent, simple_bot_message_handler, PayloadContainsFilter, BotEvent
|
||||
import locales
|
||||
|
||||
student_router = DefaultRouter()
|
||||
|
||||
|
||||
@student_router.registrar.with_decorator(PayloadContainsFilter("student"),)
|
||||
async def student_menu(event: BotEvent):
|
||||
sevent = SimpleBotEvent(event)
|
||||
return await sevent.answer(
|
||||
message=locales.ST_MENU,
|
||||
keyboard=locales.ST_KB.get_keyboard(),
|
||||
)
|
13
blueprints/teacher.py
Normal file
13
blueprints/teacher.py
Normal file
@ -0,0 +1,13 @@
|
||||
from vkwave.bots import DefaultRouter, SimpleBotEvent, simple_bot_message_handler, PayloadContainsFilter, BotEvent
|
||||
import locales
|
||||
|
||||
teacher_router = DefaultRouter()
|
||||
|
||||
|
||||
@teacher_router.registrar.with_decorator(PayloadContainsFilter("teacher"),)
|
||||
async def teacher_menu(event: BotEvent):
|
||||
sevent = SimpleBotEvent(event)
|
||||
return await sevent.answer(
|
||||
message=locales.TC_MENU,
|
||||
keyboard=locales.TC_KB.get_keyboard(),
|
||||
)
|
@ -3,13 +3,14 @@ import logging
|
||||
import random
|
||||
|
||||
from vkwave.bots import DefaultRouter, SimpleBotEvent, simple_bot_message_handler, PayloadFilter, PayloadContainsFilter, \
|
||||
PhotoUploader
|
||||
PhotoUploader, Storage
|
||||
from vkwave.bots import Keyboard, ButtonColor
|
||||
from vkwave.bots import EventTypeFilter, BotEvent
|
||||
from vkwave.types.bot_events import BotEventType
|
||||
from vkwave.bots.fsm import FiniteStateMachine, StateFilter, ForWhat, State, ANY_STATE
|
||||
|
||||
import locales
|
||||
import util
|
||||
from config import Config
|
||||
from db import DB
|
||||
from db.db import TestResult
|
||||
@ -21,9 +22,12 @@ from locales import INPUT_NAME_TEXT
|
||||
# MENU_KB.add_row()
|
||||
# MENU_KB.add_text_button(text="Бонус", payload={"command": "bonus"}, color=ButtonColor.POSITIVE)
|
||||
# from nft_things.NftSender import NFTSender
|
||||
from util.redis_db import RedisDB
|
||||
|
||||
test_router = DefaultRouter()
|
||||
|
||||
fsm = FiniteStateMachine()
|
||||
test_router.registrar.add_default_filter(StateFilter(fsm, ..., ..., always_false=True))
|
||||
test_router.registrar.add_default_filter(
|
||||
EventTypeFilter(BotEventType.MESSAGE_NEW.value)) # we don't want to write it in all handlers.
|
||||
|
||||
@ -40,7 +44,7 @@ test_router.registrar.add_default_filter(
|
||||
# return "You are quited!"
|
||||
|
||||
@test_router.registrar.with_decorator(
|
||||
PayloadContainsFilter("test"),# for state in States.questions[:-1]]
|
||||
PayloadContainsFilter("test"),
|
||||
)
|
||||
async def main_part_handle(event: BotEvent):
|
||||
user_id = event.object.object.message.from_id
|
||||
@ -51,7 +55,7 @@ async def main_part_handle(event: BotEvent):
|
||||
logging.debug(f"State index: {state_idx}")
|
||||
|
||||
|
||||
q_res = payload['q'] if 'q' in payload else None
|
||||
q_res = payload['q'] if 'q' in payload else event.object.object.message.text
|
||||
logging.debug(f"Qres: {q_res}")
|
||||
|
||||
# extra_state_data works as fsm.add_data(..., state_data={"name": event.object.object.message.text})
|
||||
@ -61,17 +65,28 @@ async def main_part_handle(event: BotEvent):
|
||||
DB().update_test_result(user_id, question=state_idx, answer=q_res)
|
||||
|
||||
if state_idx + 1 < len(locales.questions):
|
||||
return await botevent.answer(
|
||||
message=locales.questions[state_idx + 1][0],
|
||||
keyboard=locales.questions[state_idx + 1][1].get_keyboard(),
|
||||
)
|
||||
RedisDB().set_state(user_id, state_idx + 1)
|
||||
kb = locales.questions[state_idx + 1][1]
|
||||
if kb:
|
||||
return await botevent.answer(
|
||||
message=locales.questions[state_idx + 1][0],
|
||||
keyboard=kb.get_keyboard(),
|
||||
)
|
||||
else:
|
||||
return await botevent.answer(
|
||||
message=locales.questions[state_idx + 1][0],
|
||||
payload=json.dumps({"test": state_idx + 1}),
|
||||
|
||||
)
|
||||
else:
|
||||
# todo add task to send user an image here
|
||||
# Config().nft_sender.add_task()
|
||||
RedisDB().del_state(user_id)
|
||||
logging.warn("Sending attach!")
|
||||
|
||||
big_attachment = await Config().uploader.get_attachments_from_paths(
|
||||
peer_id=user_id,
|
||||
file_paths=["img.jpg"],
|
||||
file_paths=[util.get_image(user_id)],
|
||||
)
|
||||
await Config().api_ctx.messages.send(
|
||||
user_id=user_id, attachment=big_attachment, random_id=0
|
||||
|
Reference in New Issue
Block a user