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,
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,
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"),
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"})
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)
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(
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("Отправьте текст проблемы с подробным описанием бага")