コード例 #1
0
ファイル: finances.py プロジェクト: uni-jacob/jacob
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _create_category(ans: bots.SimpleBotEvent):
    state_storage = managers.StateStorageManager(
        students.get_system_id_of_student(ans.from_id), )
    state_storage.update(
        state=state_storage.get_id_of_state("fin_wait_category_desc"))
    await ans.answer(
        "Отправьте название категории и сумму сбора, разделенные пробелом",
        keyboard=kbs.common.cancel().get_keyboard(),
    )


@bots.simple_bot_message_handler(
    finances_router,
    filters.StateFilter("fin_wait_category_desc"),
    filters.PLFilter({"button": "cancel"}),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _cancel_creating_category(ans: bots.SimpleBotEvent):
    student_id = students.get_system_id_of_student(ans.from_id)
    state_storage = managers.StateStorageManager(student_id)
    state_storage.update(state=state_storage.get_id_of_state("main"))
    await ans.answer(
        "Создание категории отменено",
        keyboard=kbs.finances.list_of_fin_categories(student_id, ),
    )


@bots.simple_bot_message_handler(
    finances_router,
コード例 #2
0
from jacob.services import keyboard as kbs
from jacob.services.logger import config as logger_config

call_menu_router = bots.DefaultRouter()
api_session = api.API(
    tokens=os.getenv("VK_TOKEN"),
    clients=client.AIOHTTPClient(),
)
api_context = api_session.get_context()
logger.configure(**logger_config.config)


@bots.simple_bot_message_handler(
    call_menu_router,
    filters.PLFilter({"button": "half"}),
    filters.StateFilter("mention_select_mentioned"),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _select_half(ans: bots.SimpleBotEvent):
    payload = ujson.loads(ans.object.object.message.payload)
    admin_id = students.get_system_id_of_student(
        ans.object.object.message.from_id)
    await ans.answer(
        "Выберите призываемых студентов",
        keyboard=kbs.call.CallNavigator(admin_id).render().submenu(
            payload["half"]),
    )


@bots.simple_bot_message_handler(
    call_menu_router,
コード例 #3
0
    admin_id = students.get_system_id_of_student(ans.from_id)

    state_store = managers.StateStorageManager(admin_id)
    state_store.update(
        state=state_store.get_id_of_state("groups_enter_name_list"))

    await ans.answer(
        "Введите название списка",
        keyboard=kbs.common.cancel().get_keyboard(),
    )


@bots.simple_bot_message_handler(
    group_router,
    filters.PLFilter({"button": "cancel"}),
    filters.StateFilter("groups_enter_name_list"),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _cancel_saving_list(ans: bots.SimpleBotEvent):
    admin_id = students.get_system_id_of_student(ans.from_id)
    state_store = managers.StateStorageManager(admin_id)
    state_store.update(state=state_store.get_id_of_state("main"))
    await ans.answer(
        "Создание списка отменено",
        keyboard=kbs.group.list_of_lists(admin.get_active_group(admin_id).id),
    )


@bots.simple_bot_message_handler(
    group_router,
    filters.StateFilter("groups_enter_name_list"),
コード例 #4
0
    state_storage = managers.StateStorageManager(
        students.get_system_id_of_student(ans.from_id), )
    state_storage.update(
        state=state_storage.get_id_of_state("students_select_student"))
    await ans.answer(
        "Выберите студента",
        keyboard=kbs.contacts.ContactsNavigator(
            students.get_system_id_of_student(
                ans.from_id, ), ).render().menu(),
    )


@bots.simple_bot_message_handler(
    students_router,
    filters.PLFilter({"button": "half"})
    & filters.StateFilter("students_select_student"),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _select_half(ans: bots.SimpleBotEvent):
    await ans.answer(
        "Выберите студента",
        keyboard=kbs.contacts.ContactsNavigator(
            students.get_system_id_of_student(
                ans.object.object.message.from_id, ), ).render().submenu(
                    ans.payload.get("half"), ),
    )


@bots.simple_bot_message_handler(
    students_router,
    filters.PLFilter({"button": "letter"})
コード例 #5
0
ファイル: start.py プロジェクト: uni-jacob/jacob
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _cancel_call(ans: bots.SimpleBotEvent):
    admin_id = students.get_system_id_of_student(ans.object.object.message.from_id)
    managers.MentionStorageManager(admin_id).clear()
    state_store = managers.StateStorageManager(admin_id)
    state_store.update(state=state_store.get_id_of_state("main"))
    await ans.answer(
        "Призыв отменён. Возврат на главную.",
        keyboard=kbs.main.main_menu(admin_id),
    )


@bots.simple_bot_message_handler(
    call_start_router,
    filters.StateFilter("mention_confirm"),
    filters.PLFilter({"button": "deny"}),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _deny_call(ans: bots.SimpleBotEvent):
    await _cancel_call(ans)


@bots.simple_bot_message_handler(
    call_start_router,
    filters.PLFilter({"button": "skip_call_message"}),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _skip_register_call_message(ans: bots.SimpleBotEvent):
    admin_id = students.get_system_id_of_student(ans.object.object.message.from_id)
    state_store = managers.StateStorageManager(admin_id)
コード例 #6
0
    admin_id = students.get_system_id_of_student(ans.from_id)
    state_store = managers.StateStorageManager(admin_id)
    state_store.update(state=state_store.get_id_of_state("pref_select_chat"))
    await ans.answer(
        "Список подключенных чатов",
        keyboard=await kbs.preferences.connected_chats(
            api_context,
            students.get_system_id_of_student(ans.from_id, ),
        ),
    )


@bots.simple_bot_message_handler(
    preferences_router,
    filters.PLFilter({"button": "chat"}),
    filters.StateFilter("pref_select_chat"),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _configure_chat(ans: bots.SimpleBotEvent):
    with orm.db_session:
        chat_object = models.Chat[ans.payload["chat_id"]]

    chat_title = await chats.get_chat_name(api_context, chat_object.vk_id)

    await ans.answer(
        "Настройки чата {0}".format(chat_title),
        keyboard=kbs.preferences.configure_chat(chat_object.id),
    )


@bots.simple_bot_message_handler(
コード例 #7
0
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _start_reporting(ans: bots.SimpleBotEvent):
    state_manager = managers.StateStorageManager(
        students.get_system_id_of_student(ans.from_id), )
    state_manager.update(
        state=state_manager.get_id_of_state("report_wait_title"), )
    await ans.answer(
        "Отправьте заголовок проблемы, кратко описывающий произошедшее",
        keyboard=kbs.common.empty(),
    )


@bots.simple_bot_message_handler(
    report_router,
    filters.StateFilter("report_wait_title"),
    bots.MessageFromConversationTypeFilter("from_pm"),
)
async def _ask_for_issue_text(ans: bots.SimpleBotEvent):
    issue_store = managers.IssueStorageManager(
        students.get_system_id_of_student(ans.from_id, ), )
    logger.debug(ans.text)
    issue_store.update(title=ans.object.object.message.text, )
    state_manager = managers.StateStorageManager(
        students.get_system_id_of_student(ans.from_id), )
    state_manager.update(
        state=state_manager.get_id_of_state("report_wait_text"), )

    await ans.answer("Отправьте текст проблемы с подробным описанием бага")