Fixed keyboard and added man page
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Andrey Gumirov
2022-05-03 21:06:32 +07:00
parent 9065115927
commit cc206ff358
6 changed files with 41 additions and 50 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
*__pycache__*
tmp
.env
docker-compose-dev.yml

View File

@ -1,4 +1,5 @@
from .menu import menu_router
from .test import test_router
from .teacher import teacher_router
from .student import student_router
from .student import student_router
from .man import man_router

19
blueprints/man.py Normal file
View File

@ -0,0 +1,19 @@
from vkwave.bots import DefaultRouter, SimpleBotEvent, simple_bot_message_handler, PayloadContainsFilter, BotEvent, \
EventTypeFilter
from vkwave.types.bot_events import BotEventType
import locales
man_router = DefaultRouter()
@man_router.registrar.with_decorator(
EventTypeFilter(BotEventType.MESSAGE_NEW.value),
PayloadContainsFilter("man"),
)
async def man_menu(event: BotEvent):
sevent = SimpleBotEvent(event)
return await sevent.answer(
message=locales.MAN,
keyboard=locales.MAN_KB.get_keyboard(),
)

View File

@ -1,43 +1,21 @@
import json
import logging
import random
from vkwave.bots import DefaultRouter, SimpleBotEvent, simple_bot_message_handler, PayloadFilter, PayloadContainsFilter, \
PhotoUploader, Storage
from vkwave.bots import Keyboard, ButtonColor
from vkwave.bots import DefaultRouter, SimpleBotEvent, PayloadContainsFilter
from vkwave.bots import Keyboard
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
from locales import INPUT_NAME_TEXT
# MENU_KB.add_row()
# MENU_KB.add_text_button(text="Профиль", payload={"command": "profile"}, color=ButtonColor.SECONDARY)
# 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
from util.nft_util import get_image
test_router = DefaultRouter()
EMPTY_KB = '{"buttons": [], "inline": false, "one_time": false}'
# # exiting from poll (works on any state)
# @test_router.registrar.with_decorator(
# lambda event: event.object.object.message.text == "exit",
# StateFilter(fsm=fsm, state=ANY_STATE, for_what=ForWhat.FOR_USER)
# )
# async def simple_handler(event: BotEvent):
# # Check if we have the user in database
# if await fsm.get_data(event, for_what=ForWhat.FOR_USER) is not None:
# await fsm.finish(event=event, for_what=ForWhat.FOR_USER)
# return "You are quited!"
@test_router.registrar.with_decorator(
EventTypeFilter(BotEventType.MESSAGE_NEW.value),
@ -51,7 +29,6 @@ async def main_part_handle(event: BotEvent):
state_idx = int(payload["test"])
logging.debug(f"State index: {state_idx}")
q_res = payload['q'] if 'q' in payload else event.object.object.message.text
logging.debug(f"Qres: {q_res}")
@ -73,7 +50,7 @@ async def main_part_handle(event: BotEvent):
return await botevent.answer(
message=locales.questions[state_idx + 1][0],
payload=json.dumps({"test": state_idx + 1}),
keyboard=EMPTY_KB, # try to remove keyboard
)
else:
# todo add task to send user an image here
@ -92,21 +69,3 @@ async def main_part_handle(event: BotEvent):
message=locales.LAST_MESSAGE,
keyboard=locales.LAST_MESSAGE_KB.get_keyboard(),
)
# @test_router.registrar.with_decorator(
# StateFilter(fsm=fsm, state=MyState.age, for_what=ForWhat.FOR_USER),
# )
# async def simple_handler(event: BotEvent):
# if not event.object.object.message.text.isdigit():
# return f"Please, send only positive numbers!"
# await fsm.add_data(
# event=event,
# for_what=ForWhat.FOR_USER,
# state_data={"age": event.object.object.message.text},
# )
# user_data = await fsm.get_data(event=event, for_what=ForWhat.FOR_USER)
#
# # finish poll and delete the user
# # `fsm.finish` will do it
# await fsm.finish(event=event, for_what=ForWhat.FOR_USER)
# return f"Your data - {user_data}"

View File

@ -9,7 +9,8 @@ MENU_KB.add_row()
MENU_KB.add_text_button(text="Пообщаться со студентом", payload={"student": "1"}, color=ButtonColor.PRIMARY)
MENU_KB.add_row()
MENU_KB.add_text_button(text="Пообщаться с преподавателем", payload={"teacher": "1"}, color=ButtonColor.PRIMARY)
MENU_KB.add_row()
MENU_KB.add_text_button(text="АЧе делать?", payload={"man": "1"}, color=ButtonColor.PRIMARY)
# Student menu
ST_MENU = """Вот список студентов, которые могут рассказать тебе про Инженерную Школу
@ -52,6 +53,16 @@ TC_KB.add_link_button(text="Юрий Данилович", link="https://vk.com/y
TC_KB.add_row()
TC_KB.add_text_button(text="ХОЧУ ДОМОЙ!!!!!!!!!!!!!!!", payload={}, color=ButtonColor.NEGATIVE)
# Manual
MAN = """Если вы хотите пройти тест - нажми на соответствующую кнопку.
Если вы абитуриент, и хотите узнать больше про инженерную школу, то вы можете пообщаться со студентами или преподавателями!
Для этого нажмите на кнопку “Диалог со студентом” или “Диалог с преподавателем”.
Также вы можете узнать про нас из соцсетей - для этого нажмите на кнопку “Таплинк”.
Если вы хотите пообщаться с другими абитуриентами - нажми на кнопку “Неформальный чат”.
Приятного пользования!"""
MAN_KB = Keyboard()
MAN_KB.add_text_button(text="ХОЧУ ДОМОЙ!!!!!!!!!!!!!!!", payload={}, color=ButtonColor.NEGATIVE)
# TEST Questions
INPUT_NAME_TEXT = "Пожалуйста, введите имя:"
@ -116,7 +127,6 @@ LAST_MESSAGE = "Спасибо, что прошел тест!"
LAST_MESSAGE_KB = Keyboard()
LAST_MESSAGE_KB.add_text_button(text="Вернуться на главную", payload={}, color=ButtonColor.POSITIVE)
questions = [
(WHAT_ENGINEER_ARE_YOU, WHAT_ENGINEER_ARE_YOU_KB),
(PROG_LANG, PROG_LANG_KB),

View File

@ -3,7 +3,7 @@ import logging
from vkwave.bots import SimpleLongPollBot, PhotoUploader
from blueprints import (
menu_router, test_router, student_router, teacher_router,
menu_router, test_router, student_router, teacher_router, man_router,
)
from config import Config
from middlewares import UserMiddleware
@ -21,10 +21,10 @@ Config().uploader = uploader
bot.middleware_manager.add_middleware(UserMiddleware())
bot.middleware_manager.add_middleware(TestStateMiddleware())
bot.dispatcher.add_router(test_router)
bot.dispatcher.add_router(student_router)
bot.dispatcher.add_router(teacher_router)
bot.dispatcher.add_router(man_router)
# регаем последним чтобы сначала проверялись все остальные команды
bot.dispatcher.add_router(menu_router)