bot-framework 0.3.0__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. bot_framework-0.3.2/.claude/skills/publish/SKILL.md +29 -0
  2. bot_framework-0.3.2/.claude/skills/publish/scripts/publish.sh +43 -0
  3. {bot_framework-0.3.0 → bot_framework-0.3.2}/.gitignore +3 -0
  4. bot_framework-0.3.2/.import_linter_cache/5eed3c5c99ec4febcf0c27e426c754866f8ea6d6.data.json +1 -0
  5. bot_framework-0.3.2/.import_linter_cache/bot_framework.meta.json +1 -0
  6. {bot_framework-0.3.0 → bot_framework-0.3.2}/PKG-INFO +1 -1
  7. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/app/bot_application.py +1 -0
  8. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/start_menu/main_menu_sender.py +13 -0
  9. {bot_framework-0.3.0 → bot_framework-0.3.2}/pyproject.toml +1 -1
  10. bot_framework-0.3.0/.import_linter_cache/5eed3c5c99ec4febcf0c27e426c754866f8ea6d6.data.json +0 -1
  11. bot_framework-0.3.0/.import_linter_cache/bot_framework.meta.json +0 -1
  12. {bot_framework-0.3.0 → bot_framework-0.3.2}/.claude/settings.local.json +0 -0
  13. {bot_framework-0.3.0 → bot_framework-0.3.2}/.import_linter_cache/.gitignore +0 -0
  14. {bot_framework-0.3.0 → bot_framework-0.3.2}/.import_linter_cache/CACHEDIR.TAG +0 -0
  15. {bot_framework-0.3.0 → bot_framework-0.3.2}/.python-version +0 -0
  16. {bot_framework-0.3.0 → bot_framework-0.3.2}/CLAUDE.md +0 -0
  17. {bot_framework-0.3.0 → bot_framework-0.3.2}/README.md +0 -0
  18. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/__init__.py +0 -0
  19. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/app/__init__.py +0 -0
  20. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/__init__.py +0 -0
  21. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/create.py +0 -0
  22. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/delete.py +0 -0
  23. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/get_all.py +0 -0
  24. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/get_by_key.py +0 -0
  25. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/get_by_name.py +0 -0
  26. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/read.py +0 -0
  27. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/read_sequence_by_user_id.py +0 -0
  28. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/base_protocols/update.py +0 -0
  29. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/data/languages.json +0 -0
  30. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/data/phrases.json +0 -0
  31. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/data/roles.json +0 -0
  32. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/decorators/__init__.py +0 -0
  33. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/decorators/role_checker.py +0 -0
  34. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/__init__.py +0 -0
  35. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/bot_callback.py +0 -0
  36. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/bot_message.py +0 -0
  37. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/bot_user.py +0 -0
  38. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/button.py +0 -0
  39. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/keyboard.py +0 -0
  40. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/language_code.py +0 -0
  41. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/parse_mode.py +0 -0
  42. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/role.py +0 -0
  43. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/role_name.py +0 -0
  44. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/entities/user.py +0 -0
  45. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/__init__.py +0 -0
  46. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/entities/__init__.py +0 -0
  47. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/entities/flow_stack_entry.py +0 -0
  48. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/flow_registry.py +0 -0
  49. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/protocols/__init__.py +0 -0
  50. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/protocols/i_flow_message_deleter.py +0 -0
  51. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/protocols/i_flow_message_storage.py +0 -0
  52. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/protocols/i_flow_stack_storage.py +0 -0
  53. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/protocols/i_flow_stack_validator.py +0 -0
  54. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/repos/__init__.py +0 -0
  55. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/repos/redis_flow_message_storage.py +0 -0
  56. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/repos/redis_flow_stack_storage.py +0 -0
  57. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/services/__init__.py +0 -0
  58. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/services/flow_message_deleter.py +0 -0
  59. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/services/flow_stack_navigator.py +0 -0
  60. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/services/flow_stack_validator.py +0 -0
  61. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/__init__.py +0 -0
  62. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/_step_flow_router.py +0 -0
  63. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/base_step.py +0 -0
  64. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/flow.py +0 -0
  65. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/protocols/__init__.py +0 -0
  66. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/protocols/i_step.py +0 -0
  67. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/protocols/i_step_state_storage.py +0 -0
  68. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flow_management/step_flow/step_field.py +0 -0
  69. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/__init__.py +0 -0
  70. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/__init__.py +0 -0
  71. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/actions/__init__.py +0 -0
  72. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/actions/role_assigner.py +0 -0
  73. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/actions/role_rejection_notifier.py +0 -0
  74. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/actions/role_request_sender.py +0 -0
  75. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/entities/__init__.py +0 -0
  76. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/entities/request_role_flow_state.py +0 -0
  77. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/exceptions.py +0 -0
  78. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/factory.py +0 -0
  79. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/handlers/__init__.py +0 -0
  80. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/handlers/approve_role_handler.py +0 -0
  81. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/handlers/reject_role_handler.py +0 -0
  82. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/handlers/request_role_command_handler.py +0 -0
  83. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/handlers/role_selection_handler.py +0 -0
  84. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/handlers/show_roles_handler.py +0 -0
  85. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/presenters/__init__.py +0 -0
  86. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/presenters/role_list_presenter.py +0 -0
  87. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/__init__.py +0 -0
  88. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/i_request_role_flow_router.py +0 -0
  89. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/i_request_role_flow_state_storage.py +0 -0
  90. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/i_role_assigner.py +0 -0
  91. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/i_role_list_presenter.py +0 -0
  92. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/i_role_rejection_notifier.py +0 -0
  93. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/protocols/i_role_request_sender.py +0 -0
  94. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/repos/__init__.py +0 -0
  95. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/repos/redis_request_role_flow_state_storage.py +0 -0
  96. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/flows/request_role_flow/request_role_flow_router.py +0 -0
  97. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/__init__.py +0 -0
  98. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/entities/__init__.py +0 -0
  99. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/entities/language.py +0 -0
  100. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/entities/phrase.py +0 -0
  101. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/loaders/__init__.py +0 -0
  102. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/loaders/language_loader.py +0 -0
  103. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/loaders/phrase_loader.py +0 -0
  104. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/providers/__init__.py +0 -0
  105. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/providers/phrase_provider.py +0 -0
  106. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/providers/protocols/__init__.py +0 -0
  107. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/providers/protocols/i_phrase_provider.py +0 -0
  108. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/providers/redis_phrase_provider.py +0 -0
  109. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/repos/__init__.py +0 -0
  110. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/repos/language_repo.py +0 -0
  111. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/repos/phrase_repo.py +0 -0
  112. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/repos/protocols/__init__.py +0 -0
  113. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/repos/protocols/i_language_repo.py +0 -0
  114. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/repos/protocols/i_phrase_repo.py +0 -0
  115. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/validators/__init__.py +0 -0
  116. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/language_management/validators/missing_translations_validator.py +0 -0
  117. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/__init__.py +0 -0
  118. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/__init__.py +0 -0
  119. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/factory.py +0 -0
  120. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/i_language_menu_sender.py +0 -0
  121. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/language_command_handler.py +0 -0
  122. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/language_menu_sender.py +0 -0
  123. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/select_language_handler.py +0 -0
  124. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/language_menu/show_language_menu_handler.py +0 -0
  125. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/start_menu/__init__.py +0 -0
  126. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/start_menu/i_main_menu_sender.py +0 -0
  127. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/menus/start_menu/start_command_handler.py +0 -0
  128. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/migrations/__init__.py +0 -0
  129. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/migrations/runner.py +0 -0
  130. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/migrations/sql/0001.initial-schema.rollback.sql +0 -0
  131. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/migrations/sql/0001.initial-schema.sql +0 -0
  132. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/migrations/sql/0002.seed-data.rollback.sql +0 -0
  133. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/migrations/sql/0002.seed-data.sql +0 -0
  134. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/__init__.py +0 -0
  135. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_bot.py +0 -0
  136. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_callback_answerer.py +0 -0
  137. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_callback_handler.py +0 -0
  138. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_callback_handler_registry.py +0 -0
  139. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_card_field_formatter.py +0 -0
  140. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_display_width_calculator.py +0 -0
  141. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_ensure_user_exists.py +0 -0
  142. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_flow_router.py +0 -0
  143. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_markdown_to_html_converter.py +0 -0
  144. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_core.py +0 -0
  145. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_deleter.py +0 -0
  146. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_handler.py +0 -0
  147. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_handler_registry.py +0 -0
  148. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_replacer.py +0 -0
  149. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_sender.py +0 -0
  150. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_message_service.py +0 -0
  151. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_middleware.py +0 -0
  152. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_next_step_handler_registrar.py +0 -0
  153. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_notify_replacer.py +0 -0
  154. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/protocols/i_remaining_time_formatter.py +0 -0
  155. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/py.typed +0 -0
  156. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/__init__.py +0 -0
  157. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/entities/__init__.py +0 -0
  158. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/entities/user_role.py +0 -0
  159. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/loaders/__init__.py +0 -0
  160. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/loaders/role_loader.py +0 -0
  161. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/repos/__init__.py +0 -0
  162. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/repos/protocols/__init__.py +0 -0
  163. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/repos/protocols/i_role_repo.py +0 -0
  164. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/repos/protocols/i_user_repo.py +0 -0
  165. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/repos/role_repo.py +0 -0
  166. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/repos/user_repo.py +0 -0
  167. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/services/__init__.py +0 -0
  168. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/services/ensure_user_exists.py +0 -0
  169. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/role_management/services/protocols/__init__.py +0 -0
  170. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/services/__init__.py +0 -0
  171. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/services/card_field_formatter.py +0 -0
  172. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/services/display_width_calculator.py +0 -0
  173. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/services/remaining_time_formatter.py +0 -0
  174. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/__init__.py +0 -0
  175. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/_step_flow_router.py +0 -0
  176. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/base_step.py +0 -0
  177. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/flow.py +0 -0
  178. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/protocols/__init__.py +0 -0
  179. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/protocols/i_step.py +0 -0
  180. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/step_flow/protocols/i_step_state_storage.py +0 -0
  181. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/__init__.py +0 -0
  182. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/middleware/__init__.py +0 -0
  183. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/middleware/ensure_user_middleware.py +0 -0
  184. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/middleware/telegram_base_middleware.py +0 -0
  185. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/protocols/__init__.py +0 -0
  186. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/protocols/i_markdown_escaper.py +0 -0
  187. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/__init__.py +0 -0
  188. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/callback_answerer.py +0 -0
  189. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/callback_handler_registry.py +0 -0
  190. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/close_callback_handler.py +0 -0
  191. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/markdown_escaper.py +0 -0
  192. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/markdown_to_html_converter.py +0 -0
  193. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/message_handler_registry.py +0 -0
  194. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/next_step_handler_registrar.py +0 -0
  195. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/telegram_message_core.py +0 -0
  196. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/telegram_message_deleter.py +0 -0
  197. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/telegram_message_replacer.py +0 -0
  198. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/telegram_message_sender.py +0 -0
  199. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/telegram_message_service.py +0 -0
  200. {bot_framework-0.3.0 → bot_framework-0.3.2}/bot_framework/telegram/services/telegram_notify_replacer.py +0 -0
  201. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/__init__.pyi +0 -0
  202. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/apihelper.pyi +0 -0
  203. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/async_telebot.pyi +0 -0
  204. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_filters.pyi +0 -0
  205. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_handler_backends.pyi +0 -0
  206. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_helper.pyi +0 -0
  207. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_storage/__init__.pyi +0 -0
  208. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_storage/base_storage.pyi +0 -0
  209. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_storage/memory_storage.pyi +0 -0
  210. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_storage/pickle_storage.pyi +0 -0
  211. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/asyncio_storage/redis_storage.pyi +0 -0
  212. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/callback_data.pyi +0 -0
  213. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/custom_filters.pyi +0 -0
  214. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/ext/__init__.pyi +0 -0
  215. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/ext/aio/__init__.pyi +0 -0
  216. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/ext/reloader.pyi +0 -0
  217. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/ext/sync/__init__.pyi +0 -0
  218. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/formatting.pyi +0 -0
  219. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/handler_backends.pyi +0 -0
  220. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/service_utils.pyi +0 -0
  221. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/storage/__init__.pyi +0 -0
  222. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/storage/base_storage.pyi +0 -0
  223. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/storage/memory_storage.pyi +0 -0
  224. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/storage/pickle_storage.pyi +0 -0
  225. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/storage/redis_storage.pyi +0 -0
  226. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/types.pyi +0 -0
  227. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/util.pyi +0 -0
  228. {bot_framework-0.3.0 → bot_framework-0.3.2}/stubs/telebot/version.pyi +0 -0
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: publish
3
+ description: Публикация пакета на PyPI через uv.
4
+ allowed-tools: Bash(.claude/skills/publish/scripts/*)
5
+ ---
6
+
7
+ Публикация пакета на PyPI. $ARGUMENTS
8
+
9
+ ## Инструкции
10
+
11
+ ### Перед публикацией
12
+
13
+ 1. Убедись, что в `.env` заполнена переменная `PYPI_TOKEN`
14
+ 2. Проверь, что версия в `pyproject.toml` обновлена (не совпадает с уже опубликованной)
15
+
16
+ ### Публикация
17
+
18
+ ```bash
19
+ .claude/skills/publish/scripts/publish.sh
20
+ ```
21
+
22
+ Скрипт автоматически:
23
+ - Запускает линтеры и тесты
24
+ - Собирает пакет
25
+ - Публикует на PyPI
26
+
27
+ ### Bump версии
28
+
29
+ Если нужно поднять версию перед публикацией, обнови поле `version` в `pyproject.toml`.
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ GREEN='\033[0;32m'
5
+ YELLOW='\033[1;33m'
6
+ RED='\033[0;31m'
7
+ NC='\033[0m'
8
+
9
+ cd "$(git rev-parse --show-toplevel)"
10
+
11
+ # Load .env
12
+ if [ -f .env ]; then
13
+ set -a
14
+ source .env
15
+ set +a
16
+ fi
17
+
18
+ # Validate token
19
+ if [ -z "$PYPI_TOKEN" ]; then
20
+ echo -e "${RED}PYPI_TOKEN not found in .env${NC}"
21
+ exit 1
22
+ fi
23
+
24
+ VERSION=$(grep -m1 '^version' pyproject.toml | sed 's/.*"\(.*\)".*/\1/')
25
+ echo -e "${YELLOW}Publishing version ${VERSION}...${NC}"
26
+
27
+ echo -e "${YELLOW}Running linters...${NC}"
28
+ uv run ruff check bot_framework/
29
+ uv run mypy bot_framework/
30
+
31
+ echo -e "${YELLOW}Running tests...${NC}"
32
+ uv run pytest || [ $? -eq 5 ]
33
+
34
+ echo -e "${YELLOW}Cleaning dist/...${NC}"
35
+ rm -rf dist/
36
+
37
+ echo -e "${YELLOW}Building package...${NC}"
38
+ uv build
39
+
40
+ echo -e "${YELLOW}Publishing to PyPI...${NC}"
41
+ uv publish --token "$PYPI_TOKEN"
42
+
43
+ echo -e "${GREEN}Published bot-framework ${VERSION} to PyPI!${NC}"
@@ -54,3 +54,6 @@ Thumbs.db
54
54
 
55
55
  # Agent branch (local per-clone)
56
56
  .agent-branch
57
+
58
+ # Todoist binding (local per-clone)
59
+ .todoist.yaml
@@ -0,0 +1 @@
1
+ {"bot_framework.protocols.i_message_handler":[["bot_framework.entities.bot_message",6,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.language_management.entities":[["bot_framework.entities",1,"from bot_framework.entities import LanguageCode"],["bot_framework.language_management.entities.language",3,"from .language import Language"],["bot_framework.language_management.entities.phrase",4,"from .phrase import Phrase"]],"bot_framework.telegram.services.telegram_message_core":[["bot_framework.telegram.services.next_step_handler_registrar",23,"from .next_step_handler_registrar import NextStepHandlerRegistrar"],["bot_framework.role_management.services",55,"from bot_framework.role_management.services import EnsureUserExists"],["bot_framework.telegram.services.telegram_message_deleter",24,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.entities.bot_message",11,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.telegram.services.callback_answerer",20,"from .callback_answerer import CallbackAnswerer"],["bot_framework.telegram.services.telegram_message_sender",74,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.services.telegram_message_replacer",25,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.telegram.services.telegram_message_service",75,"from .telegram_message_service import TelegramMessageService"],["bot_framework.telegram.services.telegram_notify_replacer",76,"from .telegram_notify_replacer import TelegramNotifyReplacer"],["bot_framework.telegram.services.callback_answerer",68,"from .callback_answerer import CallbackAnswerer"],["bot_framework.telegram.services.callback_handler_registry",69,"from .callback_handler_registry import CallbackHandlerRegistry"],["bot_framework.role_management.repos",54,"from bot_framework.role_management.repos import RoleRepo, UserRepo"],["bot_framework.telegram.services.telegram_message_deleter",72,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.flow_management",14,"from bot_framework.flow_management import IFlowMessageStorage"],["bot_framework.entities.keyboard",12,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.telegram.middleware",56,"from bot_framework.telegram.middleware import EnsureUserMiddleware"],["bot_framework.telegram.services.telegram_message_replacer",73,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.telegram.services.markdown_escaper",16,"from .markdown_escaper import MarkdownEscaper"],["bot_framework.telegram.services.next_step_handler_registrar",71,"from .next_step_handler_registrar import NextStepHandlerRegistrar"],["bot_framework.telegram.services.message_handler_registry",22,"from .message_handler_registry import MessageHandlerRegistry"],["bot_framework.telegram.services.telegram_message_sender",26,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.services.telegram_message_service",27,"from .telegram_message_service import TelegramMessageService"],["bot_framework.telegram.services.callback_handler_registry",21,"from .callback_handler_registry import CallbackHandlerRegistry"],["bot_framework.telegram.services.markdown_to_html_converter",17,"from .markdown_to_html_converter import MarkdownToHtmlConverter"],["bot_framework.entities.parse_mode",13,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.telegram.services.message_handler_registry",70,"from .message_handler_registry import MessageHandlerRegistry"]],"bot_framework.protocols.i_callback_handler_registry":[["bot_framework.protocols.i_callback_handler",5,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"]],"bot_framework.telegram.protocols.i_markdown_escaper":[],"bot_framework.language_management.entities.phrase":[],"bot_framework.telegram.middleware.telegram_base_middleware":[],"bot_framework.role_management.repos.protocols":[["bot_framework.role_management.repos.protocols.i_role_repo",1,"from .i_role_repo import IRoleRepo"],["bot_framework.role_management.repos.protocols.i_user_repo",2,"from .i_user_repo import IUserRepo"]],"bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage":[["bot_framework.flows.request_role_flow.entities",5,"from bot_framework.flows.request_role_flow.entities import RequestRoleFlowState"]],"bot_framework.flows.request_role_flow.presenters":[["bot_framework.flows.request_role_flow.presenters.role_list_presenter",1,"from bot_framework.flows.request_role_flow.presenters.role_list_presenter import ("]],"bot_framework.protocols":[["bot_framework.protocols.i_message_deleter",10,"from .i_message_deleter import IMessageDeleter"],["bot_framework.protocols.i_display_width_calculator",5,"from .i_display_width_calculator import IDisplayWidthCalculator"],["bot_framework.protocols.i_notify_replacer",17,"from .i_notify_replacer import INotifyReplacer"],["bot_framework.protocols.i_markdown_to_html_converter",8,"from .i_markdown_to_html_converter import IMarkdownToHtmlConverter"],["bot_framework.protocols.i_message_handler_registry",12,"from .i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.protocols.i_callback_answerer",1,"from .i_callback_answerer import ICallbackAnswerer"],["bot_framework.protocols.i_bot",19,"from .i_bot import IBot"],["bot_framework.protocols.i_callback_handler_registry",3,"from .i_callback_handler_registry import ICallbackHandlerRegistry"],["bot_framework.protocols.i_message_replacer",13,"from .i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_ensure_user_exists",6,"from .i_ensure_user_exists import IEnsureUserExists"],["bot_framework.protocols.i_message_core",9,"from .i_message_core import IMessageCore"],["bot_framework.protocols.i_middleware",20,"from .i_middleware import IMiddleware"],["bot_framework.protocols.i_next_step_handler_registrar",16,"from .i_next_step_handler_registrar import INextStepHandlerRegistrar"],["bot_framework.protocols.i_flow_router",7,"from .i_flow_router import IFlowRouter"],["bot_framework.protocols.i_remaining_time_formatter",18,"from .i_remaining_time_formatter import IRemainingTimeFormatter"],["bot_framework.protocols.i_message_service",15,"from .i_message_service import IMessageService"],["bot_framework.protocols.i_message_sender",14,"from .i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_handler",11,"from .i_message_handler import IMessageHandler"],["bot_framework.protocols.i_card_field_formatter",4,"from .i_card_field_formatter import ICardFieldFormatter"],["bot_framework.protocols.i_callback_handler",2,"from .i_callback_handler import ICallbackHandler"]],"bot_framework.language_management.loaders.phrase_loader":[],"bot_framework.entities.language_code":[],"bot_framework.base_protocols.update":[],"bot_framework.telegram.services.close_callback_handler":[["bot_framework.entities.bot_callback",1,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.telegram.protocols",2,"from bot_framework.telegram.protocols import ICallbackAnswerer, IMessageDeleter"]],"bot_framework.flow_management.services.flow_stack_navigator":[["bot_framework.flow_management.entities",7,"from bot_framework.flow_management.entities import FlowStackEntry"],["bot_framework.flow_management.protocols",9,"from bot_framework.flow_management.protocols import ("],["bot_framework.flow_management.flow_registry",8,"from bot_framework.flow_management.flow_registry import FlowRegistry"],["bot_framework.entities.user",6,"from bot_framework.entities.user import User"]],"bot_framework.flows.request_role_flow.presenters.role_list_presenter":[["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.language_management.repos.protocols.i_phrase_repo",4,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.role_management.repos.protocols.i_role_repo",6,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.entities.user",3,"from bot_framework.entities.user import User"],["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_message_sender",5,"from bot_framework.protocols.i_message_sender import IMessageSender"]],"bot_framework.base_protocols.get_by_name":[],"bot_framework.flows.request_role_flow.protocols.i_role_assigner":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.base_protocols":[["bot_framework.base_protocols.update",10,"from .update import UpdateProtocol"],["bot_framework.base_protocols.get_by_key",4,"from .get_by_key import GetByKeyProtocol"],["bot_framework.base_protocols.read",6,"from .read import ReadProtocol"],["bot_framework.base_protocols.delete",2,"from .delete import DeleteProtocol"],["bot_framework.base_protocols.read_sequence_by_user_id",7,"from .read_sequence_by_user_id import ("],["bot_framework.base_protocols.get_by_name",5,"from .get_by_name import GetByNameProtocol"],["bot_framework.base_protocols.get_all",3,"from .get_all import GetAllProtocol"],["bot_framework.base_protocols.create",1,"from .create import CreateProtocol"]],"bot_framework.flows.request_role_flow.actions":[["bot_framework.flows.request_role_flow.actions.role_rejection_notifier",2,"from bot_framework.flows.request_role_flow.actions.role_rejection_notifier import ("],["bot_framework.flows.request_role_flow.actions.role_assigner",1,"from bot_framework.flows.request_role_flow.actions.role_assigner import RoleAssigner"],["bot_framework.flows.request_role_flow.actions.role_request_sender",5,"from bot_framework.flows.request_role_flow.actions.role_request_sender import ("]],"bot_framework.entities.user":[["bot_framework.entities.language_code",9,"from bot_framework.entities.language_code import LanguageCode"]],"bot_framework.menus.language_menu.select_language_handler":[["bot_framework.menus.language_menu.i_language_menu_sender",4,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.menus":[["bot_framework.menus.language_menu",7,"from bot_framework.menus.language_menu import ("],["bot_framework.menus.start_menu.main_menu_sender",6,"from bot_framework.menus.start_menu.main_menu_sender import MenuButtonConfig"],["bot_framework.menus.start_menu",1,"from bot_framework.menus.start_menu import ("]],"bot_framework.language_management.repos":[["bot_framework.language_management.repos.phrase_repo",2,"from .phrase_repo import PhraseRepo"],["bot_framework.language_management.repos.language_repo",1,"from .language_repo import LanguageRepo"]],"bot_framework.telegram.services.telegram_notify_replacer":[["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.protocols.i_message_deleter",6,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"],["bot_framework.protocols.i_notify_replacer",8,"from bot_framework.protocols.i_notify_replacer import INotifyReplacer"],["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.protocols.i_message_sender",7,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.flow_management.step_flow.protocols.i_step_state_storage":[],"bot_framework.language_management.repos.phrase_repo":[["bot_framework.language_management.repos.protocols.i_phrase_repo",3,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.flow_management.entities.flow_stack_entry":[],"bot_framework.telegram.services.markdown_escaper":[["bot_framework.telegram.protocols.i_markdown_escaper",3,"from bot_framework.telegram.protocols.i_markdown_escaper import IMarkdownEscaper"]],"bot_framework.telegram.services.telegram_message_deleter":[["bot_framework.protocols.i_message_deleter",6,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"],["bot_framework.telegram.services.telegram_message_core",9,"from .telegram_message_core import TelegramMessageCore"]],"bot_framework.flows":[["bot_framework.flows.request_role_flow",1,"from bot_framework.flows.request_role_flow import ("]],"bot_framework.menus.start_menu":[["bot_framework.menus.start_menu.main_menu_sender",2,"from bot_framework.menus.start_menu.main_menu_sender import MainMenuSender"],["bot_framework.menus.start_menu.i_main_menu_sender",1,"from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender"],["bot_framework.menus.start_menu.start_command_handler",3,"from bot_framework.menus.start_menu.start_command_handler import StartCommandHandler"]],"bot_framework.flows.request_role_flow.handlers.reject_role_handler":[["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.flows.request_role_flow.protocols",4,"from bot_framework.flows.request_role_flow.protocols import IRoleRejectionNotifier"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.menus.language_menu.language_menu_sender":[["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_message_sender",10,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_replacer",9,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.menus.language_menu.i_language_menu_sender",8,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.entities.user",3,"from bot_framework.entities.user import User"],["bot_framework.language_management.repos.protocols.i_language_repo",4,"from bot_framework.language_management.repos.protocols.i_language_repo import ("],["bot_framework.language_management.repos.protocols.i_phrase_repo",7,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.role_management.services.protocols":[],"bot_framework.menus.start_menu.start_command_handler":[["bot_framework.flows.request_role_flow.protocols",3,"from bot_framework.flows.request_role_flow.protocols import IRequestRoleFlowRouter"],["bot_framework.protocols.i_message_sender",6,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_handler",5,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.role_management.repos.protocols.i_role_repo",7,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.menus.start_menu.i_main_menu_sender",4,"from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender"],["bot_framework.role_management.repos.protocols.i_user_repo",8,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_message",2,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.decorators.role_checker",1,"from bot_framework.decorators.role_checker import check_message_roles"]],"bot_framework.flows.request_role_flow.exceptions":[],"bot_framework.menus.start_menu.main_menu_sender":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"],["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.role_management.repos.protocols.i_role_repo",8,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.menus.start_menu.i_main_menu_sender",5,"from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender"],["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.protocols.i_callback_handler",6,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"],["bot_framework.protocols.i_message_sender",7,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.language_management.repos.protocols.i_phrase_repo",4,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.telegram.services.callback_handler_registry":[["bot_framework.protocols.i_callback_handler",8,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"],["bot_framework.telegram.services.telegram_message_core",11,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.entities.bot_callback",7,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.menus.language_menu.show_language_menu_handler":[["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.menus.language_menu.i_language_menu_sender",4,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.telegram.middleware":[["bot_framework.telegram.middleware.ensure_user_middleware",1,"from .ensure_user_middleware import EnsureUserMiddleware"],["bot_framework.telegram.middleware.telegram_base_middleware",2,"from .telegram_base_middleware import TelegramBaseMiddleware"]],"bot_framework.language_management.providers.redis_phrase_provider":[["bot_framework.language_management.providers.protocols",3,"from bot_framework.language_management.providers.protocols import IPhraseProvider"]],"bot_framework.migrations":[["bot_framework.migrations.runner",1,"from bot_framework.migrations.runner import apply_migrations"]],"bot_framework.language_management.providers.protocols":[["bot_framework.language_management.providers.protocols.i_phrase_provider",1,"from bot_framework.language_management.providers.protocols.i_phrase_provider import ("]],"bot_framework.app":[["bot_framework.app.bot_application",1,"from .bot_application import BotApplication"]],"bot_framework.flow_management.step_flow.flow":[["bot_framework.entities.user",5,"from bot_framework.entities.user import User"],["bot_framework.entities",4,"from bot_framework.entities import BotMessage"],["bot_framework.flow_management.step_flow.protocols.i_step_state_storage",11,"from bot_framework.flow_management.step_flow.protocols.i_step_state_storage import ("],["bot_framework.flow_management.step_flow._step_flow_router",6,"from bot_framework.flow_management.step_flow._step_flow_router import ("],["bot_framework.flow_management.step_flow.protocols.i_step",10,"from bot_framework.flow_management.step_flow.protocols.i_step import IStep"]],"bot_framework.flow_management.protocols.i_flow_message_deleter":[],"bot_framework.telegram.services.telegram_message_sender":[["bot_framework.entities.parse_mode",7,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.protocols.i_message_sender",8,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.telegram.services.telegram_message_core",10,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.step_flow.base_step":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.flow_management":[["bot_framework.flow_management.step_flow",18,"from bot_framework.flow_management.step_flow import ("],["bot_framework.flow_management.flow_registry",2,"from bot_framework.flow_management.flow_registry import FlowRegistry"],["bot_framework.flow_management.repos",9,"from bot_framework.flow_management.repos import ("],["bot_framework.flow_management.services",13,"from bot_framework.flow_management.services import ("],["bot_framework.flow_management.entities",1,"from bot_framework.flow_management.entities import FlowStackEntry"],["bot_framework.flow_management.protocols",3,"from bot_framework.flow_management.protocols import ("]],"bot_framework.flows.request_role_flow.protocols.i_role_list_presenter":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.flows.request_role_flow.factory":[["bot_framework.protocols.i_message_sender",27,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.language_management.repos.protocols.i_phrase_repo",21,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.flows.request_role_flow.handlers",6,"from bot_framework.flows.request_role_flow.handlers import ("],["bot_framework.flows.request_role_flow.request_role_flow_router",18,"from bot_framework.flows.request_role_flow.request_role_flow_router import ("],["bot_framework.protocols.i_callback_answerer",22,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.flows.request_role_flow.presenters",13,"from bot_framework.flows.request_role_flow.presenters import RoleListPresenter"],["bot_framework.protocols.i_message_handler_registry",26,"from bot_framework.protocols.i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.flows.request_role_flow.protocols",14,"from bot_framework.flows.request_role_flow.protocols import ("],["bot_framework.protocols.i_callback_handler_registry",23,"from bot_framework.protocols.i_callback_handler_registry import ("],["bot_framework.flows.request_role_flow.actions",1,"from bot_framework.flows.request_role_flow.actions import ("],["bot_framework.role_management.repos.protocols.i_user_repo",29,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.role_management.repos.protocols.i_role_repo",28,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"]],"bot_framework.language_management":[["bot_framework.language_management.repos",3,"from bot_framework.language_management.repos import LanguageRepo, PhraseRepo"],["bot_framework.language_management.providers",2,"from bot_framework.language_management.providers import IPhraseProvider, PhraseProvider"],["bot_framework.language_management.entities",1,"from bot_framework.language_management.entities import Language, LanguageCode, Phrase"],["bot_framework.language_management.repos.protocols",4,"from bot_framework.language_management.repos.protocols import ILanguageRepo, IPhraseRepo"]],"bot_framework.flows.request_role_flow.actions.role_assigner":[["bot_framework.role_management.repos.protocols.i_role_repo",4,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.entities.user",1,"from bot_framework.entities.user import User"],["bot_framework.language_management.repos.protocols.i_phrase_repo",2,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.protocols.i_message_sender",3,"from bot_framework.protocols.i_message_sender import IMessageSender"]],"bot_framework.flows.request_role_flow.request_role_flow_router":[["bot_framework.flows.request_role_flow.protocols",2,"from bot_framework.flows.request_role_flow.protocols import IRoleListPresenter"],["bot_framework.entities.user",1,"from bot_framework.entities.user import User"]],"bot_framework.menus.language_menu.i_language_menu_sender":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.flow_management.step_flow.step_field":[],"bot_framework.telegram.services.telegram_message_replacer":[["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_message_replacer",8,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",7,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.telegram.services.telegram_message_core",10,"from .telegram_message_core import TelegramMessageCore"]],"bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.flow_management.protocols.i_flow_stack_storage":[["bot_framework.flow_management.entities",3,"from bot_framework.flow_management.entities import FlowStackEntry"]],"bot_framework.language_management.providers":[["bot_framework.language_management.providers.phrase_provider",1,"from bot_framework.language_management.providers.phrase_provider import PhraseProvider"],["bot_framework.language_management.providers.redis_phrase_provider",3,"from bot_framework.language_management.providers.redis_phrase_provider import ("],["bot_framework.language_management.providers.protocols",2,"from bot_framework.language_management.providers.protocols import IPhraseProvider"]],"bot_framework.flow_management.entities":[["bot_framework.flow_management.entities.flow_stack_entry",3,"from bot_framework.flow_management.entities.flow_stack_entry import FlowStackEntry"]],"bot_framework.protocols.i_message_replacer":[["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"]],"bot_framework.protocols.i_message_service":[["bot_framework.protocols.i_message_sender",5,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_notify_replacer",6,"from bot_framework.protocols.i_notify_replacer import INotifyReplacer"],["bot_framework.protocols.i_message_replacer",4,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_message_deleter",3,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"]],"bot_framework.decorators":[["bot_framework.decorators.role_checker",1,"from bot_framework.decorators.role_checker import ("]],"bot_framework.flows.request_role_flow.actions.role_rejection_notifier":[["bot_framework.protocols.i_message_sender",3,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.user",1,"from bot_framework.entities.user import User"],["bot_framework.language_management.repos.protocols.i_phrase_repo",2,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.flows.request_role_flow.handlers":[["bot_framework.flows.request_role_flow.handlers.request_role_command_handler",7,"from bot_framework.flows.request_role_flow.handlers.request_role_command_handler import ("],["bot_framework.flows.request_role_flow.handlers.show_roles_handler",13,"from bot_framework.flows.request_role_flow.handlers.show_roles_handler import ("],["bot_framework.flows.request_role_flow.handlers.approve_role_handler",1,"from bot_framework.flows.request_role_flow.handlers.approve_role_handler import ("],["bot_framework.flows.request_role_flow.handlers.role_selection_handler",10,"from bot_framework.flows.request_role_flow.handlers.role_selection_handler import ("],["bot_framework.flows.request_role_flow.handlers.reject_role_handler",4,"from bot_framework.flows.request_role_flow.handlers.reject_role_handler import ("]],"bot_framework.telegram.protocols":[["bot_framework.telegram.protocols.i_markdown_escaper",20,"from .i_markdown_escaper import IMarkdownEscaper"],["bot_framework.protocols",1,"from bot_framework.protocols import ("]],"bot_framework.flows.request_role_flow.entities":[["bot_framework.flows.request_role_flow.entities.request_role_flow_state",1,"from bot_framework.flows.request_role_flow.entities.request_role_flow_state import ("]],"bot_framework.language_management.repos.language_repo":[["bot_framework.language_management.entities.language",4,"from bot_framework.language_management.entities.language import Language"],["bot_framework.language_management.repos.protocols.i_language_repo",5,"from bot_framework.language_management.repos.protocols.i_language_repo import ILanguageRepo"]],"bot_framework.flows.request_role_flow.repos":[["bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage",1,"from bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage import ("]],"bot_framework.services.remaining_time_formatter":[["bot_framework.protocols",4,"from bot_framework.protocols import IRemainingTimeFormatter"],["bot_framework.language_management.repos.protocols.i_phrase_repo",3,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.decorators.role_checker":[["bot_framework.entities.bot_message",6,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.bot_callback",5,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.flow_management.protocols.i_flow_message_storage":[],"bot_framework.flows.request_role_flow.handlers.request_role_command_handler":[["bot_framework.flows.request_role_flow.protocols",2,"from bot_framework.flows.request_role_flow.protocols import ("],["bot_framework.entities.bot_message",1,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_message_handler",5,"from bot_framework.protocols.i_message_handler import IMessageHandler"]],"bot_framework.language_management.repos.protocols.i_phrase_repo":[],"bot_framework.telegram":[["bot_framework.telegram.services",16,"from .services import ("],["bot_framework.telegram.protocols",2,"from .protocols import ("],["bot_framework.telegram.middleware",1,"from .middleware import EnsureUserMiddleware, TelegramBaseMiddleware"]],"bot_framework.role_management.repos":[["bot_framework.role_management.repos.role_repo",1,"from .role_repo import RoleRepo"],["bot_framework.role_management.repos.user_repo",2,"from .user_repo import UserRepo"]],"bot_framework.base_protocols.get_by_key":[],"bot_framework.flow_management.repos.redis_flow_stack_storage":[["bot_framework.flow_management.entities",7,"from bot_framework.flow_management.entities import FlowStackEntry"]],"bot_framework.flows.request_role_flow.protocols":[["bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router",1,"from bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router import ("],["bot_framework.flows.request_role_flow.protocols.i_role_list_presenter",10,"from bot_framework.flows.request_role_flow.protocols.i_role_list_presenter import ("],["bot_framework.flows.request_role_flow.protocols.i_role_assigner",7,"from bot_framework.flows.request_role_flow.protocols.i_role_assigner import ("],["bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier",13,"from bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier import ("],["bot_framework.flows.request_role_flow.protocols.i_role_request_sender",16,"from bot_framework.flows.request_role_flow.protocols.i_role_request_sender import ("],["bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage",4,"from bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage import ("]],"bot_framework.entities.role_name":[],"bot_framework.entities.bot_message":[],"bot_framework.protocols.i_bot":[],"bot_framework.flow_management.services.flow_stack_validator":[["bot_framework.flow_management.flow_registry",5,"from bot_framework.flow_management.flow_registry import FlowRegistry"],["bot_framework.flow_management.protocols",6,"from bot_framework.flow_management.protocols import IFlowStackStorage"]],"bot_framework.protocols.i_next_step_handler_registrar":[["bot_framework.protocols.i_message_handler",4,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.role_management.loaders":[["bot_framework.role_management.loaders.role_loader",1,"from bot_framework.role_management.loaders.role_loader import RoleLoader"]],"bot_framework.protocols.i_flow_router":[["bot_framework.entities.user",8,"from bot_framework.entities.user import User"]],"bot_framework.language_management.validators.missing_translations_validator":[],"bot_framework.protocols.i_remaining_time_formatter":[],"bot_framework.role_management.repos.protocols.i_user_repo":[["bot_framework.base_protocols",3,"from bot_framework.base_protocols import ("],["bot_framework.entities.user",10,"from bot_framework.entities.user import User"]],"bot_framework.base_protocols.create":[],"bot_framework.flow_management.protocols.i_flow_stack_validator":[],"bot_framework.step_flow.protocols.i_step":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.role_management.entities.user_role":[],"bot_framework.protocols.i_middleware":[],"bot_framework.language_management.entities.language":[],"bot_framework.telegram.services.markdown_to_html_converter":[["bot_framework.telegram.protocols",4,"from bot_framework.telegram.protocols import IMarkdownToHtmlConverter"]],"bot_framework.flow_management.repos":[["bot_framework.flow_management.repos.redis_flow_message_storage",3,"from bot_framework.flow_management.repos.redis_flow_message_storage import ("],["bot_framework.flow_management.repos.redis_flow_stack_storage",6,"from bot_framework.flow_management.repos.redis_flow_stack_storage import RedisFlowStackStorage"]],"bot_framework.role_management.loaders.role_loader":[],"bot_framework.protocols.i_callback_answerer":[],"bot_framework.app.bot_application":[["bot_framework.flows.request_role_flow",7,"from bot_framework.flows.request_role_flow import RequestRoleFlowFactory"],["bot_framework.menus",16,"from bot_framework.menus import ("],["bot_framework.flows.request_role_flow.repos",8,"from bot_framework.flows.request_role_flow.repos import ("],["bot_framework.language_management.providers",15,"from bot_framework.language_management.providers import RedisPhraseProvider"],["bot_framework.language_management.validators",13,"from bot_framework.language_management.validators import MissingTranslationsValidator"],["bot_framework.menus.language_menu",21,"from bot_framework.menus.language_menu import LanguageMenuFactory"],["bot_framework.migrations",53,"from bot_framework.migrations import apply_migrations"],["bot_framework.role_management.loaders",14,"from bot_framework.role_management.loaders import RoleLoader"],["bot_framework.flow_management",6,"from bot_framework.flow_management import RedisFlowMessageStorage"],["bot_framework.telegram",24,"from bot_framework.telegram import CloseCallbackHandler, TelegramMessageCore"],["bot_framework.role_management.repos",23,"from bot_framework.role_management.repos import RoleRepo, UserRepo"],["bot_framework.language_management.loaders",11,"from bot_framework.language_management.loaders import LanguageLoader, PhraseLoader"],["bot_framework.protocols.i_callback_handler",22,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"],["bot_framework.language_management.repos",12,"from bot_framework.language_management.repos import LanguageRepo"],["bot_framework.telegram.services",29,"from bot_framework.telegram.services import ("]],"bot_framework.entities.parse_mode":[],"bot_framework.role_management.services":[["bot_framework.role_management.services.ensure_user_exists",1,"from .ensure_user_exists import EnsureUserExists"]],"bot_framework.language_management.repos.protocols":[["bot_framework.language_management.repos.protocols.i_phrase_repo",2,"from .i_phrase_repo import IPhraseRepo"],["bot_framework.language_management.repos.protocols.i_language_repo",1,"from .i_language_repo import ILanguageRepo"]],"bot_framework.language_management.repos.protocols.i_language_repo":[["bot_framework.base_protocols",3,"from bot_framework.base_protocols import ("]],"bot_framework.role_management.services.ensure_user_exists":[["bot_framework.role_management.repos.protocols.i_user_repo",5,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_user",2,"from bot_framework.entities.bot_user import BotUser"],["bot_framework.role_management.repos.protocols.i_role_repo",4,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.protocols",3,"from bot_framework.protocols import IEnsureUserExists"],["bot_framework.entities",1,"from bot_framework.entities import RoleName, User"]],"bot_framework.services.card_field_formatter":[["bot_framework.protocols",1,"from bot_framework.protocols import ICardFieldFormatter, IDisplayWidthCalculator"],["bot_framework.services.display_width_calculator",2,"from bot_framework.services.display_width_calculator import DisplayWidthCalculator"]],"bot_framework.protocols.i_message_core":[["bot_framework.protocols.i_message_sender",13,"from .i_message_sender import IMessageSender"],["bot_framework.protocols.i_callback_answerer",8,"from .i_callback_answerer import ICallbackAnswerer"],["bot_framework.protocols.i_message_handler_registry",11,"from .i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.protocols.i_message_deleter",10,"from .i_message_deleter import IMessageDeleter"],["bot_framework.protocols.i_message_replacer",12,"from .i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_next_step_handler_registrar",14,"from .i_next_step_handler_registrar import INextStepHandlerRegistrar"],["bot_framework.protocols.i_bot",15,"from .i_bot import IBot"],["bot_framework.protocols.i_callback_handler_registry",9,"from .i_callback_handler_registry import ICallbackHandlerRegistry"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.base_protocols.delete":[],"bot_framework.flow_management.services.flow_message_deleter":[["bot_framework.flow_management.protocols",5,"from bot_framework.flow_management.protocols import IFlowMessageStorage"],["bot_framework.protocols",6,"from bot_framework.protocols import IMessageDeleter"]],"bot_framework.step_flow":[["bot_framework.flow_management.step_flow.flow",2,"from bot_framework.flow_management.step_flow.flow import Flow"],["bot_framework.flow_management.step_flow.protocols",3,"from bot_framework.flow_management.step_flow.protocols import IStep, IStepStateStorage"],["bot_framework.flow_management.step_flow.base_step",1,"from bot_framework.flow_management.step_flow.base_step import BaseStep"]],"bot_framework.flows.request_role_flow.handlers.role_selection_handler":[["bot_framework.flows.request_role_flow.exceptions",4,"from bot_framework.flows.request_role_flow.exceptions import NoSupervisorsFoundError"],["bot_framework.flows.request_role_flow.protocols",5,"from bot_framework.flows.request_role_flow.protocols import ("],["bot_framework.role_management.repos.protocols.i_user_repo",13,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_message_sender",11,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_callback_answerer",10,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.language_management.repos.protocols.i_phrase_repo",9,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.role_management.repos.protocols.i_role_repo",12,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.menus.language_menu":[["bot_framework.menus.language_menu.show_language_menu_handler",10,"from bot_framework.menus.language_menu.show_language_menu_handler import ("],["bot_framework.menus.language_menu.select_language_handler",7,"from bot_framework.menus.language_menu.select_language_handler import ("],["bot_framework.menus.language_menu.factory",1,"from bot_framework.menus.language_menu.factory import LanguageMenuFactory"],["bot_framework.menus.language_menu.i_language_menu_sender",2,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.menus.language_menu.language_command_handler",3,"from bot_framework.menus.language_menu.language_command_handler import ("],["bot_framework.menus.language_menu.language_menu_sender",6,"from bot_framework.menus.language_menu.language_menu_sender import LanguageMenuSender"]],"bot_framework.protocols.i_notify_replacer":[["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.flow_management.step_flow._step_flow_router":[["bot_framework.entities.user",4,"from bot_framework.entities.user import User"],["bot_framework.flow_management.step_flow.protocols.i_step_state_storage",6,"from bot_framework.flow_management.step_flow.protocols.i_step_state_storage import ("],["bot_framework.entities",3,"from bot_framework.entities import BotCallback, BotMessage"],["bot_framework.flow_management.step_flow.protocols.i_step",5,"from bot_framework.flow_management.step_flow.protocols.i_step import IStep"]],"bot_framework.services":[["bot_framework.services.remaining_time_formatter",3,"from .remaining_time_formatter import RemainingTimeFormatter"],["bot_framework.services.card_field_formatter",1,"from .card_field_formatter import CardFieldFormatter"],["bot_framework.services.display_width_calculator",2,"from .display_width_calculator import DisplayWidthCalculator"]],"bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.language_management.validators":[["bot_framework.language_management.validators.missing_translations_validator",3,"from bot_framework.language_management.validators.missing_translations_validator import ("]],"bot_framework.language_management.loaders.language_loader":[],"bot_framework.base_protocols.get_all":[],"bot_framework.flow_management.step_flow.protocols":[["bot_framework.flow_management.step_flow.protocols.i_step_state_storage",2,"from bot_framework.flow_management.step_flow.protocols.i_step_state_storage import ("],["bot_framework.flow_management.step_flow.protocols.i_step",1,"from bot_framework.flow_management.step_flow.protocols.i_step import IStep"]],"bot_framework.telegram.services.callback_answerer":[["bot_framework.telegram.services.telegram_message_core",6,"from .telegram_message_core import TelegramMessageCore"]],"bot_framework.menus.language_menu.language_command_handler":[["bot_framework.entities.bot_message",1,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.role_management.repos.protocols.i_user_repo",3,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.menus.language_menu.i_language_menu_sender",2,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"]],"bot_framework.entities.bot_callback":[],"bot_framework.flow_management.step_flow.base_step":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.protocols.i_markdown_to_html_converter":[],"bot_framework.protocols.i_message_deleter":[],"bot_framework.menus.start_menu.i_main_menu_sender":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.base_protocols.read":[],"bot_framework.telegram.services.telegram_message_service":[["bot_framework.protocols.i_message_service",8,"from bot_framework.protocols.i_message_service import IMessageService"],["bot_framework.entities.parse_mode",7,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.telegram.services.telegram_notify_replacer",14,"from .telegram_notify_replacer import TelegramNotifyReplacer"],["bot_framework.telegram.services.telegram_message_replacer",12,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.telegram.services.telegram_message_sender",13,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.services.telegram_message_deleter",11,"from .telegram_message_deleter import TelegramMessageDeleter"]],"bot_framework.flow_management.flow_registry":[["bot_framework.protocols.i_flow_router",3,"from bot_framework.protocols.i_flow_router import IFlowRouter"]],"bot_framework.role_management":[["bot_framework.role_management.repos.protocols",3,"from bot_framework.role_management.repos.protocols import IRoleRepo, IUserRepo"],["bot_framework.role_management.services",4,"from bot_framework.role_management.services import EnsureUserExists"],["bot_framework.role_management.entities",1,"from bot_framework.role_management.entities import Role, RoleName, User, UserRole"],["bot_framework.role_management.repos",2,"from bot_framework.role_management.repos import RoleRepo, UserRepo"]],"bot_framework.flow_management.repos.redis_flow_message_storage":[],"bot_framework.protocols.i_display_width_calculator":[],"bot_framework.flows.request_role_flow.entities.request_role_flow_state":[],"bot_framework.flows.request_role_flow.handlers.show_roles_handler":[["bot_framework.flows.request_role_flow.protocols",4,"from bot_framework.flows.request_role_flow.protocols import IRoleListPresenter"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.language_management.providers.phrase_provider":[["bot_framework.language_management.providers.protocols",1,"from bot_framework.language_management.providers.protocols import IPhraseProvider"],["bot_framework.language_management.repos",2,"from bot_framework.language_management.repos import PhraseRepo"]],"bot_framework":[["bot_framework.protocols.i_flow_router",28,"from bot_framework.protocols.i_flow_router import IFlowRouter"],["bot_framework.entities.parse_mode",19,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.protocols.i_message_handler",30,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.entities.role_name",21,"from bot_framework.entities.role_name import RoleName"],["bot_framework.entities.language_code",18,"from bot_framework.entities.language_code import LanguageCode"],["bot_framework.entities.keyboard",17,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_callback_handler_registry",25,"from bot_framework.protocols.i_callback_handler_registry import ("],["bot_framework.decorators.role_checker",8,"from bot_framework.decorators.role_checker import ("],["bot_framework.entities.user",22,"from bot_framework.entities.user import User"],["bot_framework.protocols.i_notify_replacer",34,"from bot_framework.protocols.i_notify_replacer import INotifyReplacer"],["bot_framework.protocols.i_message_sender",33,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.button",16,"from bot_framework.entities.button import Button"],["bot_framework.entities.bot_callback",13,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.protocols.i_callback_handler",24,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"],["bot_framework.protocols.i_message_replacer",32,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.entities.bot_user",15,"from bot_framework.entities.bot_user import BotUser"],["bot_framework.protocols.i_callback_answerer",23,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.entities.role",20,"from bot_framework.entities.role import Role"],["bot_framework.protocols.i_message_deleter",29,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"],["bot_framework.entities.bot_message",14,"from bot_framework.entities.bot_message import BotMessage, BotMessageUser"],["bot_framework.protocols.i_message_handler_registry",31,"from bot_framework.protocols.i_message_handler_registry import IMessageHandlerRegistry"]],"bot_framework.step_flow.flow":[["bot_framework.step_flow.protocols.i_step",7,"from bot_framework.step_flow.protocols.i_step import IStep"],["bot_framework.entities",4,"from bot_framework.entities import BotMessage"],["bot_framework.step_flow.protocols.i_step_state_storage",8,"from bot_framework.step_flow.protocols.i_step_state_storage import IStepStateStorage"],["bot_framework.entities.user",5,"from bot_framework.entities.user import User"],["bot_framework.step_flow._step_flow_router",6,"from bot_framework.step_flow._step_flow_router import SourceContext, StepFlowRouter"]],"bot_framework.menus.language_menu.factory":[["bot_framework.role_management.repos.protocols.i_user_repo",22,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.menus.language_menu.language_menu_sender",8,"from bot_framework.menus.language_menu.language_menu_sender import LanguageMenuSender"],["bot_framework.menus.language_menu.language_command_handler",5,"from bot_framework.menus.language_menu.language_command_handler import ("],["bot_framework.protocols.i_callback_answerer",15,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.menus.language_menu.select_language_handler",9,"from bot_framework.menus.language_menu.select_language_handler import ("],["bot_framework.protocols.i_message_replacer",20,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_message_handler_registry",19,"from bot_framework.protocols.i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.protocols.i_callback_handler_registry",16,"from bot_framework.protocols.i_callback_handler_registry import ("],["bot_framework.menus.language_menu.show_language_menu_handler",12,"from bot_framework.menus.language_menu.show_language_menu_handler import ("],["bot_framework.language_management.repos.protocols.i_language_repo",1,"from bot_framework.language_management.repos.protocols.i_language_repo import ("],["bot_framework.language_management.repos.protocols.i_phrase_repo",4,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.protocols.i_message_sender",21,"from bot_framework.protocols.i_message_sender import IMessageSender"]],"bot_framework.flow_management.services":[["bot_framework.flow_management.services.flow_message_deleter",5,"from bot_framework.flow_management.services.flow_message_deleter import FlowMessageDeleter"],["bot_framework.flow_management.services.flow_stack_validator",7,"from bot_framework.flow_management.services.flow_stack_validator import FlowStackValidator"],["bot_framework.flow_management.protocols",1,"from bot_framework.flow_management.protocols import ("],["bot_framework.flow_management.services.flow_stack_navigator",6,"from bot_framework.flow_management.services.flow_stack_navigator import FlowStackNavigator"]],"bot_framework.entities.keyboard":[["bot_framework.entities.button",3,"from bot_framework.entities.button import Button"]],"bot_framework.telegram.services":[["bot_framework.telegram.services.telegram_notify_replacer",13,"from .telegram_notify_replacer import TelegramNotifyReplacer"],["bot_framework.telegram.services.markdown_to_html_converter",5,"from .markdown_to_html_converter import MarkdownToHtmlConverter"],["bot_framework.telegram.services.close_callback_handler",3,"from .close_callback_handler import CloseCallbackHandler"],["bot_framework.telegram.services.telegram_message_core",8,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.telegram.services.telegram_message_replacer",10,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.telegram.services.markdown_escaper",4,"from .markdown_escaper import MarkdownEscaper"],["bot_framework.telegram.services.message_handler_registry",6,"from .message_handler_registry import MessageHandlerRegistry"],["bot_framework.telegram.services.next_step_handler_registrar",7,"from .next_step_handler_registrar import NextStepHandlerRegistrar"],["bot_framework.telegram.services.callback_answerer",1,"from .callback_answerer import CallbackAnswerer"],["bot_framework.telegram.services.telegram_message_sender",11,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.services.telegram_message_deleter",9,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.telegram.services.callback_handler_registry",2,"from .callback_handler_registry import CallbackHandlerRegistry"],["bot_framework.telegram.services.telegram_message_service",12,"from .telegram_message_service import TelegramMessageService"]],"bot_framework.role_management.repos.role_repo":[["bot_framework.role_management.repos.protocols.i_role_repo",5,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.entities.role",4,"from bot_framework.entities.role import Role"]],"bot_framework.role_management.repos.user_repo":[["bot_framework.role_management.repos.protocols.i_user_repo",7,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.user",6,"from bot_framework.entities.user import User"]],"bot_framework.flows.request_role_flow":[["bot_framework.flows.request_role_flow.request_role_flow_router",3,"from bot_framework.flows.request_role_flow.request_role_flow_router import ("],["bot_framework.flows.request_role_flow.factory",1,"from bot_framework.flows.request_role_flow.factory import RequestRoleFlowFactory"],["bot_framework.flows.request_role_flow.protocols",2,"from bot_framework.flows.request_role_flow.protocols import IRequestRoleFlowRouter"]],"bot_framework.flows.request_role_flow.handlers.approve_role_handler":[["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.flows.request_role_flow.protocols",4,"from bot_framework.flows.request_role_flow.protocols import IRoleAssigner"]],"bot_framework.step_flow._step_flow_router":[["bot_framework.entities",3,"from bot_framework.entities import BotCallback, BotMessage"],["bot_framework.step_flow.protocols.i_step_state_storage",6,"from bot_framework.step_flow.protocols.i_step_state_storage import IStepStateStorage"],["bot_framework.step_flow.protocols.i_step",5,"from bot_framework.step_flow.protocols.i_step import IStep"],["bot_framework.entities.user",4,"from bot_framework.entities.user import User"]],"bot_framework.entities.role":[],"bot_framework.protocols.i_message_handler_registry":[["bot_framework.protocols.i_message_handler",4,"from bot_framework.protocols.i_message_handler import IMessageHandler"]],"bot_framework.protocols.i_callback_handler":[["bot_framework.entities.bot_callback",6,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.protocols.i_callback_answerer",7,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"]],"bot_framework.flow_management.step_flow":[["bot_framework.flow_management.step_flow.step_field",4,"from bot_framework.flow_management.step_flow.step_field import StepField"],["bot_framework.flow_management.step_flow.base_step",1,"from bot_framework.flow_management.step_flow.base_step import BaseStep"],["bot_framework.flow_management.step_flow.flow",2,"from bot_framework.flow_management.step_flow.flow import Flow"],["bot_framework.flow_management.step_flow.protocols",3,"from bot_framework.flow_management.step_flow.protocols import IStep, IStepStateStorage"]],"bot_framework.protocols.i_card_field_formatter":[],"bot_framework.protocols.i_message_sender":[["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.protocols.i_ensure_user_exists":[["bot_framework.entities.bot_user",3,"from bot_framework.entities.bot_user import BotUser"]],"bot_framework.step_flow.protocols.i_step_state_storage":[],"bot_framework.role_management.entities":[["bot_framework.role_management.entities.user_role",3,"from .user_role import UserRole"],["bot_framework.entities",1,"from bot_framework.entities import Role, RoleName, User"]],"bot_framework.migrations.runner":[],"bot_framework.telegram.services.next_step_handler_registrar":[["bot_framework.protocols.i_message_handler",8,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.telegram.services.telegram_message_core",11,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.entities.bot_message",7,"from bot_framework.entities.bot_message import BotMessage, BotMessageUser"]],"bot_framework.flows.request_role_flow.protocols.i_role_request_sender":[["bot_framework.entities.role",3,"from bot_framework.entities.role import Role"],["bot_framework.entities.user",4,"from bot_framework.entities.user import User"]],"bot_framework.telegram.middleware.ensure_user_middleware":[["bot_framework.entities.bot_user",3,"from bot_framework.entities.bot_user import BotUser"],["bot_framework.protocols",4,"from bot_framework.protocols import IEnsureUserExists"],["bot_framework.telegram.middleware.telegram_base_middleware",5,"from bot_framework.telegram.middleware.telegram_base_middleware import ("]],"bot_framework.entities.bot_user":[],"bot_framework.language_management.loaders":[["bot_framework.language_management.loaders.language_loader",1,"from bot_framework.language_management.loaders.language_loader import LanguageLoader"],["bot_framework.language_management.loaders.phrase_loader",2,"from bot_framework.language_management.loaders.phrase_loader import PhraseLoader"]],"bot_framework.entities":[["bot_framework.entities.parse_mode",7,"from .parse_mode import ParseMode"],["bot_framework.entities.keyboard",5,"from .keyboard import Keyboard"],["bot_framework.entities.bot_user",3,"from .bot_user import BotUser"],["bot_framework.entities.role_name",9,"from .role_name import RoleName"],["bot_framework.entities.role",8,"from .role import Role"],["bot_framework.entities.language_code",6,"from .language_code import LanguageCode"],["bot_framework.entities.button",4,"from .button import Button"],["bot_framework.entities.bot_message",2,"from .bot_message import BotMessage, BotMessageUser"],["bot_framework.entities.user",10,"from .user import User"],["bot_framework.entities.bot_callback",1,"from .bot_callback import BotCallback"]],"bot_framework.flows.request_role_flow.actions.role_request_sender":[["bot_framework.role_management.repos.protocols.i_user_repo",8,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.language_management.repos.protocols.i_phrase_repo",6,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.protocols.i_message_sender",7,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.role",3,"from bot_framework.entities.role import Role"],["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.flows.request_role_flow.exceptions",5,"from bot_framework.flows.request_role_flow.exceptions import NoSupervisorsFoundError"],["bot_framework.entities.user",4,"from bot_framework.entities.user import User"],["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.services.display_width_calculator":[["bot_framework.protocols",3,"from bot_framework.protocols import IDisplayWidthCalculator"]],"bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage":[["bot_framework.flows.request_role_flow.entities",3,"from bot_framework.flows.request_role_flow.entities import RequestRoleFlowState"]],"bot_framework.entities.button":[],"bot_framework.role_management.repos.protocols.i_role_repo":[["bot_framework.base_protocols",3,"from bot_framework.base_protocols import ("],["bot_framework.entities.role",7,"from bot_framework.entities.role import Role"]],"bot_framework.flow_management.step_flow.protocols.i_step":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.language_management.providers.protocols.i_phrase_provider":[],"bot_framework.telegram.services.message_handler_registry":[["bot_framework.protocols.i_message_handler",9,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.entities.bot_message",8,"from bot_framework.entities.bot_message import BotMessage, BotMessageUser"],["bot_framework.telegram.services.telegram_message_core",12,"from .telegram_message_core import TelegramMessageCore"]],"bot_framework.base_protocols.read_sequence_by_user_id":[],"bot_framework.flow_management.protocols":[["bot_framework.flow_management.protocols.i_flow_message_deleter",1,"from bot_framework.flow_management.protocols.i_flow_message_deleter import IFlowMessageDeleter"],["bot_framework.flow_management.protocols.i_flow_stack_storage",3,"from bot_framework.flow_management.protocols.i_flow_stack_storage import IFlowStackStorage"],["bot_framework.flow_management.protocols.i_flow_message_storage",2,"from bot_framework.flow_management.protocols.i_flow_message_storage import IFlowMessageStorage"],["bot_framework.flow_management.protocols.i_flow_stack_validator",4,"from bot_framework.flow_management.protocols.i_flow_stack_validator import IFlowStackValidator"]],"bot_framework.step_flow.protocols":[["bot_framework.step_flow.protocols.i_step",1,"from bot_framework.step_flow.protocols.i_step import IStep"],["bot_framework.step_flow.protocols.i_step_state_storage",2,"from bot_framework.step_flow.protocols.i_step_state_storage import IStepStateStorage"]]}
@@ -0,0 +1 @@
1
+ {"bot_framework.flow_management.services.flow_stack_navigator": 1770121633.4969766, "bot_framework.telegram.services.telegram_message_service": 1770121633.5039766, "bot_framework.telegram.services.close_callback_handler": 1770121633.5029767, "bot_framework.protocols.i_callback_handler": 1770121633.5009766, "bot_framework.entities.bot_message": 1770121633.4959764, "bot_framework.flows.request_role_flow.repos": 1770121633.4989765, "bot_framework.entities": 1770143425.8891168, "bot_framework.language_management.providers.protocols": 1770121633.4989765, "bot_framework.language_management.validators.missing_translations_validator": 1770121633.4999766, "bot_framework.protocols.i_callback_handler_registry": 1770121633.5009766, "bot_framework.flow_management.protocols.i_flow_message_storage": 1770121633.4969766, "bot_framework.menus.language_menu.i_language_menu_sender": 1770121633.4999766, "bot_framework.protocols.i_message_replacer": 1770121633.5009766, "bot_framework.base_protocols.delete": 1770121633.4959764, "bot_framework.entities.language_code": 1770121633.4959764, "bot_framework.flows.request_role_flow.entities.request_role_flow_state": 1770121633.4979765, "bot_framework.telegram.services.telegram_notify_replacer": 1770121633.5039766, "bot_framework.language_management.providers.phrase_provider": 1770121633.4989765, "bot_framework.protocols.i_message_sender": 1770121633.5009766, "bot_framework.flow_management.repos": 1770121633.4969766, "bot_framework.base_protocols.update": 1770121633.4959764, "bot_framework.role_management.repos.protocols.i_role_repo": 1770121633.5019765, "bot_framework.step_flow._step_flow_router": 1770143393.5018241, "bot_framework.base_protocols": 1770121633.4959764, "bot_framework.protocols.i_flow_router": 1770121633.5009766, "bot_framework.services.remaining_time_formatter": 1770121633.5029767, "bot_framework.flow_management.entities.flow_stack_entry": 1770121633.4969766, "bot_framework.entities.bot_user": 1770121633.4959764, "bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage": 1770121633.4989765, "bot_framework.language_management": 1770121633.4989765, "bot_framework.protocols.i_markdown_to_html_converter": 1770121633.5009766, "bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage": 1770121633.4989765, "bot_framework.flows.request_role_flow.presenters.role_list_presenter": 1770121633.4979765, "bot_framework.flows.request_role_flow.factory": 1770121633.4979765, "bot_framework.language_management.repos.language_repo": 1770121633.4999766, "bot_framework.flow_management.protocols.i_flow_stack_storage": 1770121633.4969766, "bot_framework.flow_management.flow_registry": 1770121633.4969766, "bot_framework.language_management.repos.protocols.i_phrase_repo": 1770121633.4999766, "bot_framework.menus.start_menu.main_menu_sender": 1770988560.61839, "bot_framework.base_protocols.read_sequence_by_user_id": 1770121633.4959764, "bot_framework.protocols.i_message_handler_registry": 1770121633.5009766, "bot_framework.role_management.repos": 1770121633.5019765, "bot_framework.language_management.repos.protocols.i_language_repo": 1770121633.4999766, "bot_framework.protocols.i_bot": 1770121633.5009766, "bot_framework.flows.request_role_flow.protocols.i_role_list_presenter": 1770121633.4989765, "bot_framework.telegram.services.telegram_message_core": 1770121633.5039766, "bot_framework.protocols.i_message_core": 1770121633.5009766, "bot_framework.entities.role_name": 1770121633.4969766, "bot_framework.flows.request_role_flow.handlers.reject_role_handler": 1770121633.4979765, "bot_framework.base_protocols.get_by_name": 1770121633.4959764, "bot_framework.flows.request_role_flow.presenters": 1770121633.4979765, "bot_framework.menus.language_menu.show_language_menu_handler": 1770121633.4999766, "bot_framework.flows.request_role_flow.actions.role_assigner": 1770121633.4979765, "bot_framework.flows.request_role_flow": 1770121633.4979765, "bot_framework.telegram.services": 1770121633.5029767, "bot_framework.flow_management.entities": 1770121633.4969766, "bot_framework.step_flow.protocols.i_step_state_storage": 1770121633.5029767, "bot_framework.decorators.role_checker": 1770121633.4959764, "bot_framework.menus.language_menu.factory": 1770121633.4999766, "bot_framework.entities.parse_mode": 1770121633.4959764, "bot_framework.protocols.i_middleware": 1770121633.5009766, "bot_framework.flows.request_role_flow.entities": 1770121633.4979765, "bot_framework": 1770121633.4949765, "bot_framework.telegram.services.telegram_message_deleter": 1770121633.5039766, "bot_framework.role_management.repos.user_repo": 1770121633.5019765, "bot_framework.role_management.repos.protocols": 1770121633.5019765, "bot_framework.flow_management.repos.redis_flow_stack_storage": 1770121633.4969766, "bot_framework.language_management.loaders.language_loader": 1770121633.4989765, "bot_framework.language_management.entities": 1770121633.4989765, "bot_framework.flow_management.services": 1770121633.4969766, "bot_framework.role_management": 1770121633.5019765, "bot_framework.services": 1770121633.5019765, "bot_framework.flows": 1770121633.4969766, "bot_framework.protocols.i_notify_replacer": 1770121633.5019765, "bot_framework.migrations": 1770121633.5009766, "bot_framework.menus.start_menu": 1770121633.4999766, "bot_framework.flows.request_role_flow.protocols.i_role_assigner": 1770121633.4989765, "bot_framework.services.card_field_formatter": 1770121633.5029767, "bot_framework.flows.request_role_flow.handlers.request_role_command_handler": 1770121633.4979765, "bot_framework.flow_management.services.flow_message_deleter": 1770121633.4969766, "bot_framework.menus.start_menu.i_main_menu_sender": 1770121633.4999766, "bot_framework.telegram.protocols": 1770121633.5029767, "bot_framework.protocols.i_card_field_formatter": 1770121633.5009766, "bot_framework.flow_management.step_flow.flow": 1770354369.7389727, "bot_framework.flow_management.protocols": 1770121633.4969766, "bot_framework.menus.start_menu.start_command_handler": 1770121633.4999766, "bot_framework.protocols.i_message_handler": 1770121633.5009766, "bot_framework.entities.user": 1770121633.4969766, "bot_framework.language_management.providers": 1770121633.4989765, "bot_framework.menus.language_menu.select_language_handler": 1770121633.4999766, "bot_framework.decorators": 1770121633.4959764, "bot_framework.step_flow.flow": 1770143417.6550417, "bot_framework.menus.language_menu.language_menu_sender": 1770121633.4999766, "bot_framework.role_management.entities.user_role": 1770121633.5019765, "bot_framework.step_flow.protocols.i_step": 1770121633.5029767, "bot_framework.menus.language_menu": 1770121633.4999766, "bot_framework.protocols.i_message_service": 1770121633.5009766, "bot_framework.role_management.loaders.role_loader": 1770121633.5019765, "bot_framework.telegram.services.telegram_message_sender": 1770121633.5039766, "bot_framework.flows.request_role_flow.handlers.show_roles_handler": 1770121633.4979765, "bot_framework.language_management.loaders.phrase_loader": 1770121633.4989765, "bot_framework.language_management.validators": 1770121633.4999766, "bot_framework.telegram.middleware": 1770121633.5029767, "bot_framework.menus.language_menu.language_command_handler": 1770121633.4999766, "bot_framework.telegram.services.next_step_handler_registrar": 1770121633.5039766, "bot_framework.role_management.repos.protocols.i_user_repo": 1770121633.5019765, "bot_framework.protocols.i_ensure_user_exists": 1770121633.5009766, "bot_framework.flows.request_role_flow.actions": 1770121633.4979765, "bot_framework.telegram.services.markdown_to_html_converter": 1770121633.5039766, "bot_framework.entities.button": 1770121633.4959764, "bot_framework.step_flow.protocols": 1770121633.5029767, "bot_framework.base_protocols.read": 1770121633.4959764, "bot_framework.role_management.services": 1770121633.5019765, "bot_framework.entities.role": 1770121633.4959764, "bot_framework.telegram.services.message_handler_registry": 1770121633.5039766, "bot_framework.flow_management.step_flow.base_step": 1770354348.095663, "bot_framework.flows.request_role_flow.protocols": 1770121633.4979765, "bot_framework.telegram.services.markdown_escaper": 1770121633.5029767, "bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router": 1770121633.4979765, "bot_framework.flow_management.services.flow_stack_validator": 1770121633.4969766, "bot_framework.base_protocols.create": 1770121633.4959764, "bot_framework.flow_management.step_flow.protocols.i_step": 1770354348.096663, "bot_framework.flows.request_role_flow.handlers.role_selection_handler": 1770121633.4979765, "bot_framework.language_management.loaders": 1770121633.4989765, "bot_framework.role_management.entities": 1770121633.5019765, "bot_framework.step_flow.base_step": 1770121633.5029767, "bot_framework.services.display_width_calculator": 1770121633.5029767, "bot_framework.telegram.services.callback_answerer": 1770121633.5029767, "bot_framework.language_management.repos.phrase_repo": 1770121633.4999766, "bot_framework.flow_management.step_flow.protocols.i_step_state_storage": 1770354348.096663, "bot_framework.entities.keyboard": 1770121633.4959764, "bot_framework.entities.bot_callback": 1770121633.4959764, "bot_framework.protocols.i_display_width_calculator": 1770121633.5009766, "bot_framework.telegram.middleware.ensure_user_middleware": 1770121633.5029767, "bot_framework.telegram.services.callback_handler_registry": 1770121633.5029767, "bot_framework.app": 1770121633.4949765, "bot_framework.flow_management.protocols.i_flow_stack_validator": 1770121633.4969766, "bot_framework.migrations.runner": 1770121633.5009766, "bot_framework.flows.request_role_flow.protocols.i_role_request_sender": 1770121633.4989765, "bot_framework.role_management.services.protocols": 1770121633.5019765, "bot_framework.flow_management.step_flow": 1770354437.337942, "bot_framework.flows.request_role_flow.exceptions": 1770121633.4979765, "bot_framework.step_flow": 1770354376.8370745, "bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier": 1770121633.4989765, "bot_framework.protocols.i_callback_answerer": 1770121633.5009766, "bot_framework.language_management.repos.protocols": 1770121633.4999766, "bot_framework.flow_management.step_flow._step_flow_router": 1770354370.870989, "bot_framework.protocols": 1770121633.5009766, "bot_framework.flows.request_role_flow.handlers": 1770121633.4979765, "bot_framework.flows.request_role_flow.handlers.approve_role_handler": 1770121633.4979765, "bot_framework.app.bot_application": 1770988565.3314073, "bot_framework.role_management.loaders": 1770121633.5019765, "bot_framework.telegram": 1770121633.5029767, "bot_framework.flow_management.step_flow.protocols": 1770354372.3710105, "bot_framework.base_protocols.get_by_key": 1770121633.4959764, "bot_framework.protocols.i_message_deleter": 1770121633.5009766, "bot_framework.flows.request_role_flow.actions.role_rejection_notifier": 1770121633.4979765, "bot_framework.telegram.middleware.telegram_base_middleware": 1770121633.5029767, "bot_framework.role_management.repos.role_repo": 1770121633.5019765, "bot_framework.flows.request_role_flow.actions.role_request_sender": 1770121633.4979765, "bot_framework.menus": 1770121633.4999766, "bot_framework.language_management.providers.redis_phrase_provider": 1770121633.4989765, "bot_framework.telegram.protocols.i_markdown_escaper": 1770121633.5029767, "bot_framework.language_management.repos": 1770121633.4999766, "bot_framework.language_management.providers.protocols.i_phrase_provider": 1770121633.4989765, "bot_framework.protocols.i_remaining_time_formatter": 1770121633.5019765, "bot_framework.language_management.entities.language": 1770121633.4989765, "bot_framework.language_management.entities.phrase": 1770121633.4989765, "bot_framework.flow_management.repos.redis_flow_message_storage": 1770121633.4969766, "bot_framework.protocols.i_next_step_handler_registrar": 1770121633.5019765, "bot_framework.flow_management": 1770354446.5130737, "bot_framework.flow_management.protocols.i_flow_message_deleter": 1770121633.4969766, "bot_framework.flows.request_role_flow.request_role_flow_router": 1770121633.4989765, "bot_framework.role_management.services.ensure_user_exists": 1770121633.5019765, "bot_framework.flow_management.step_flow.step_field": 1770354482.0965848, "bot_framework.base_protocols.get_all": 1770121633.4959764, "bot_framework.telegram.services.telegram_message_replacer": 1770121633.5039766}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bot-framework
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Reusable Telegram bot framework with Clean Architecture
5
5
  Author-email: Vladimir Sumarokov <sumarokov.vp@gmail.com>
6
6
  Requires-Python: >=3.13
@@ -164,6 +164,7 @@ class BotApplication:
164
164
  self._main_menu_sender = MainMenuSender(
165
165
  message_sender=self.core.message_sender,
166
166
  phrase_repo=self.phrase_repo,
167
+ role_repo=self.role_repo,
167
168
  welcome_phrase_key="bot.start.welcome",
168
169
  buttons=[],
169
170
  )
@@ -5,6 +5,7 @@ from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhr
5
5
  from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender
6
6
  from bot_framework.protocols.i_callback_handler import ICallbackHandler
7
7
  from bot_framework.protocols.i_message_sender import IMessageSender
8
+ from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo
8
9
 
9
10
 
10
11
  class MenuButtonConfig:
@@ -22,17 +23,27 @@ class MainMenuSender(IMainMenuSender):
22
23
  self,
23
24
  message_sender: IMessageSender,
24
25
  phrase_repo: IPhraseRepo,
26
+ role_repo: IRoleRepo,
25
27
  welcome_phrase_key: str,
26
28
  buttons: list[MenuButtonConfig] | None = None,
27
29
  ) -> None:
28
30
  self.message_sender = message_sender
29
31
  self.phrase_repo = phrase_repo
32
+ self._role_repo = role_repo
30
33
  self.welcome_phrase_key = welcome_phrase_key
31
34
  self.buttons = buttons if buttons is not None else []
32
35
 
33
36
  def add_button(self, config: MenuButtonConfig) -> None:
34
37
  self.buttons.append(config)
35
38
 
39
+ def _is_button_visible(self, handler: ICallbackHandler, user: User) -> bool:
40
+ allowed_roles = getattr(handler, "allowed_roles", None)
41
+ if not allowed_roles:
42
+ return True
43
+ user_roles = self._role_repo.get_user_roles(user_id=user.id)
44
+ user_role_names = {role.name for role in user_roles}
45
+ return bool(user_role_names & allowed_roles)
46
+
36
47
  def send(self, user: User) -> None:
37
48
  text = self.phrase_repo.get_phrase(
38
49
  key=self.welcome_phrase_key,
@@ -41,6 +52,8 @@ class MainMenuSender(IMainMenuSender):
41
52
 
42
53
  rows = []
43
54
  for button_config in self.buttons:
55
+ if not self._is_button_visible(button_config.handler, user):
56
+ continue
44
57
  button = Button(
45
58
  text=self.phrase_repo.get_phrase(
46
59
  key=button_config.phrase_key,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bot-framework"
3
- version = "0.3.0"
3
+ version = "0.3.2"
4
4
  description = "Reusable Telegram bot framework with Clean Architecture"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1 +0,0 @@
1
- {"bot_framework.flows.request_role_flow.protocols.i_role_assigner":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.language_management.providers":[["bot_framework.language_management.providers.phrase_provider",1,"from bot_framework.language_management.providers.phrase_provider import PhraseProvider"],["bot_framework.language_management.providers.protocols",2,"from bot_framework.language_management.providers.protocols import IPhraseProvider"],["bot_framework.language_management.providers.redis_phrase_provider",3,"from bot_framework.language_management.providers.redis_phrase_provider import ("]],"bot_framework.menus.language_menu.factory":[["bot_framework.protocols.i_message_handler_registry",19,"from bot_framework.protocols.i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.language_management.repos.protocols.i_phrase_repo",4,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.role_management.repos.protocols.i_user_repo",22,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_handler_registry",16,"from bot_framework.protocols.i_callback_handler_registry import ("],["bot_framework.protocols.i_message_sender",21,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.menus.language_menu.language_command_handler",5,"from bot_framework.menus.language_menu.language_command_handler import ("],["bot_framework.menus.language_menu.show_language_menu_handler",12,"from bot_framework.menus.language_menu.show_language_menu_handler import ("],["bot_framework.menus.language_menu.select_language_handler",9,"from bot_framework.menus.language_menu.select_language_handler import ("],["bot_framework.language_management.repos.protocols.i_language_repo",1,"from bot_framework.language_management.repos.protocols.i_language_repo import ("],["bot_framework.protocols.i_callback_answerer",15,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.menus.language_menu.language_menu_sender",8,"from bot_framework.menus.language_menu.language_menu_sender import LanguageMenuSender"],["bot_framework.protocols.i_message_replacer",20,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"]],"bot_framework.base_protocols.update":[],"bot_framework.flows.request_role_flow.repos":[["bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage",1,"from bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage import ("]],"bot_framework.flows.request_role_flow.actions":[["bot_framework.flows.request_role_flow.actions.role_rejection_notifier",2,"from bot_framework.flows.request_role_flow.actions.role_rejection_notifier import ("],["bot_framework.flows.request_role_flow.actions.role_assigner",1,"from bot_framework.flows.request_role_flow.actions.role_assigner import RoleAssigner"],["bot_framework.flows.request_role_flow.actions.role_request_sender",5,"from bot_framework.flows.request_role_flow.actions.role_request_sender import ("]],"bot_framework.telegram.services.telegram_message_replacer":[["bot_framework.telegram.services.telegram_message_core",10,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",7,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.protocols.i_message_replacer",8,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"]],"bot_framework.flows.request_role_flow.protocols":[["bot_framework.flows.request_role_flow.protocols.i_role_list_presenter",10,"from bot_framework.flows.request_role_flow.protocols.i_role_list_presenter import ("],["bot_framework.flows.request_role_flow.protocols.i_role_request_sender",16,"from bot_framework.flows.request_role_flow.protocols.i_role_request_sender import ("],["bot_framework.flows.request_role_flow.protocols.i_role_assigner",7,"from bot_framework.flows.request_role_flow.protocols.i_role_assigner import ("],["bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router",1,"from bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router import ("],["bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier",13,"from bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier import ("],["bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage",4,"from bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage import ("]],"bot_framework.telegram.services.callback_handler_registry":[["bot_framework.entities.bot_callback",7,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.telegram.services.telegram_message_core",11,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.protocols.i_callback_handler",8,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"]],"bot_framework.step_flow.flow":[["bot_framework.step_flow.protocols.i_step_state_storage",8,"from bot_framework.step_flow.protocols.i_step_state_storage import IStepStateStorage"],["bot_framework.step_flow._step_flow_router",6,"from bot_framework.step_flow._step_flow_router import SourceContext, StepFlowRouter"],["bot_framework.entities.user",5,"from bot_framework.entities.user import User"],["bot_framework.step_flow.protocols.i_step",7,"from bot_framework.step_flow.protocols.i_step import IStep"],["bot_framework.entities",4,"from bot_framework.entities import BotMessage"]],"bot_framework.flow_management.repos.redis_flow_stack_storage":[["bot_framework.flow_management.entities",7,"from bot_framework.flow_management.entities import FlowStackEntry"]],"bot_framework.flow_management.entities":[["bot_framework.flow_management.entities.flow_stack_entry",3,"from bot_framework.flow_management.entities.flow_stack_entry import FlowStackEntry"]],"bot_framework.telegram.services.message_handler_registry":[["bot_framework.telegram.services.telegram_message_core",12,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.entities.bot_message",8,"from bot_framework.entities.bot_message import BotMessage, BotMessageUser"],["bot_framework.protocols.i_message_handler",9,"from bot_framework.protocols.i_message_handler import IMessageHandler"]],"bot_framework.flow_management":[["bot_framework.flow_management.protocols",3,"from bot_framework.flow_management.protocols import ("],["bot_framework.flow_management.repos",9,"from bot_framework.flow_management.repos import ("],["bot_framework.flow_management.flow_registry",2,"from bot_framework.flow_management.flow_registry import FlowRegistry"],["bot_framework.flow_management.entities",1,"from bot_framework.flow_management.entities import FlowStackEntry"],["bot_framework.flow_management.services",13,"from bot_framework.flow_management.services import ("]],"bot_framework.language_management.providers.protocols":[["bot_framework.language_management.providers.protocols.i_phrase_provider",1,"from bot_framework.language_management.providers.protocols.i_phrase_provider import ("]],"bot_framework.telegram.services.telegram_notify_replacer":[["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.protocols.i_message_sender",7,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_notify_replacer",8,"from bot_framework.protocols.i_notify_replacer import INotifyReplacer"],["bot_framework.protocols.i_message_deleter",6,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.base_protocols.read":[],"bot_framework.step_flow.protocols":[["bot_framework.step_flow.protocols.i_step_state_storage",2,"from bot_framework.step_flow.protocols.i_step_state_storage import IStepStateStorage"],["bot_framework.step_flow.protocols.i_step",1,"from bot_framework.step_flow.protocols.i_step import IStep"]],"bot_framework.flow_management.services":[["bot_framework.flow_management.services.flow_stack_validator",7,"from bot_framework.flow_management.services.flow_stack_validator import FlowStackValidator"],["bot_framework.flow_management.services.flow_message_deleter",5,"from bot_framework.flow_management.services.flow_message_deleter import FlowMessageDeleter"],["bot_framework.flow_management.protocols",1,"from bot_framework.flow_management.protocols import ("],["bot_framework.flow_management.services.flow_stack_navigator",6,"from bot_framework.flow_management.services.flow_stack_navigator import FlowStackNavigator"]],"bot_framework.telegram.services.telegram_message_deleter":[["bot_framework.telegram.services.telegram_message_core",9,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.protocols.i_message_deleter",6,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"]],"bot_framework.language_management.providers.redis_phrase_provider":[["bot_framework.language_management.providers.protocols",3,"from bot_framework.language_management.providers.protocols import IPhraseProvider"]],"bot_framework.telegram.services.markdown_escaper":[["bot_framework.telegram.protocols.i_markdown_escaper",3,"from bot_framework.telegram.protocols.i_markdown_escaper import IMarkdownEscaper"]],"bot_framework.language_management.repos.protocols.i_language_repo":[["bot_framework.base_protocols",3,"from bot_framework.base_protocols import ("]],"bot_framework.flows.request_role_flow.actions.role_assigner":[["bot_framework.language_management.repos.protocols.i_phrase_repo",2,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.role_management.repos.protocols.i_role_repo",4,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.protocols.i_message_sender",3,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.user",1,"from bot_framework.entities.user import User"]],"bot_framework.menus.language_menu":[["bot_framework.menus.language_menu.select_language_handler",7,"from bot_framework.menus.language_menu.select_language_handler import ("],["bot_framework.menus.language_menu.language_command_handler",3,"from bot_framework.menus.language_menu.language_command_handler import ("],["bot_framework.menus.language_menu.i_language_menu_sender",2,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.menus.language_menu.show_language_menu_handler",10,"from bot_framework.menus.language_menu.show_language_menu_handler import ("],["bot_framework.menus.language_menu.language_menu_sender",6,"from bot_framework.menus.language_menu.language_menu_sender import LanguageMenuSender"],["bot_framework.menus.language_menu.factory",1,"from bot_framework.menus.language_menu.factory import LanguageMenuFactory"]],"bot_framework.role_management.entities.user_role":[],"bot_framework.migrations.runner":[],"bot_framework.protocols.i_middleware":[],"bot_framework.flow_management.services.flow_message_deleter":[["bot_framework.protocols",6,"from bot_framework.protocols import IMessageDeleter"],["bot_framework.flow_management.protocols",5,"from bot_framework.flow_management.protocols import IFlowMessageStorage"]],"bot_framework.telegram.services.close_callback_handler":[["bot_framework.telegram.protocols",2,"from bot_framework.telegram.protocols import ICallbackAnswerer, IMessageDeleter"],["bot_framework.entities.bot_callback",1,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.flows.request_role_flow.handlers.show_roles_handler":[["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.flows.request_role_flow.protocols",4,"from bot_framework.flows.request_role_flow.protocols import IRoleListPresenter"]],"bot_framework.flows.request_role_flow.handlers.reject_role_handler":[["bot_framework.flows.request_role_flow.protocols",4,"from bot_framework.flows.request_role_flow.protocols import IRoleRejectionNotifier"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.telegram.services.next_step_handler_registrar":[["bot_framework.protocols.i_message_handler",8,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.entities.bot_message",7,"from bot_framework.entities.bot_message import BotMessage, BotMessageUser"],["bot_framework.telegram.services.telegram_message_core",11,"from .telegram_message_core import TelegramMessageCore"]],"bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.entities.button":[],"bot_framework.step_flow.protocols.i_step":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.telegram.middleware.telegram_base_middleware":[],"bot_framework.protocols.i_next_step_handler_registrar":[["bot_framework.protocols.i_message_handler",4,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.menus.start_menu.start_command_handler":[["bot_framework.flows.request_role_flow.protocols",3,"from bot_framework.flows.request_role_flow.protocols import IRequestRoleFlowRouter"],["bot_framework.role_management.repos.protocols.i_role_repo",7,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.protocols.i_message_sender",6,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_handler",5,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.menus.start_menu.i_main_menu_sender",4,"from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender"],["bot_framework.decorators.role_checker",1,"from bot_framework.decorators.role_checker import check_message_roles"],["bot_framework.entities.bot_message",2,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.role_management.repos.protocols.i_user_repo",8,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"]],"bot_framework.telegram.services":[["bot_framework.telegram.services.close_callback_handler",3,"from .close_callback_handler import CloseCallbackHandler"],["bot_framework.telegram.services.callback_answerer",1,"from .callback_answerer import CallbackAnswerer"],["bot_framework.telegram.services.telegram_message_service",12,"from .telegram_message_service import TelegramMessageService"],["bot_framework.telegram.services.markdown_to_html_converter",5,"from .markdown_to_html_converter import MarkdownToHtmlConverter"],["bot_framework.telegram.services.telegram_message_deleter",9,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.telegram.services.telegram_message_sender",11,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.services.message_handler_registry",6,"from .message_handler_registry import MessageHandlerRegistry"],["bot_framework.telegram.services.telegram_message_replacer",10,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.telegram.services.markdown_escaper",4,"from .markdown_escaper import MarkdownEscaper"],["bot_framework.telegram.services.next_step_handler_registrar",7,"from .next_step_handler_registrar import NextStepHandlerRegistrar"],["bot_framework.telegram.services.telegram_message_core",8,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.telegram.services.callback_handler_registry",2,"from .callback_handler_registry import CallbackHandlerRegistry"],["bot_framework.telegram.services.telegram_notify_replacer",13,"from .telegram_notify_replacer import TelegramNotifyReplacer"]],"bot_framework.flows.request_role_flow.actions.role_request_sender":[["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.role_management.repos.protocols.i_user_repo",8,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_message_sender",7,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.language_management.repos.protocols.i_phrase_repo",6,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.entities.user",4,"from bot_framework.entities.user import User"],["bot_framework.entities.role",3,"from bot_framework.entities.role import Role"],["bot_framework.flows.request_role_flow.exceptions",5,"from bot_framework.flows.request_role_flow.exceptions import NoSupervisorsFoundError"],["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"]],"bot_framework.protocols":[["bot_framework.protocols.i_callback_handler",2,"from .i_callback_handler import ICallbackHandler"],["bot_framework.protocols.i_callback_answerer",1,"from .i_callback_answerer import ICallbackAnswerer"],["bot_framework.protocols.i_message_replacer",13,"from .i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_flow_router",7,"from .i_flow_router import IFlowRouter"],["bot_framework.protocols.i_remaining_time_formatter",18,"from .i_remaining_time_formatter import IRemainingTimeFormatter"],["bot_framework.protocols.i_middleware",20,"from .i_middleware import IMiddleware"],["bot_framework.protocols.i_notify_replacer",17,"from .i_notify_replacer import INotifyReplacer"],["bot_framework.protocols.i_callback_handler_registry",3,"from .i_callback_handler_registry import ICallbackHandlerRegistry"],["bot_framework.protocols.i_ensure_user_exists",6,"from .i_ensure_user_exists import IEnsureUserExists"],["bot_framework.protocols.i_message_deleter",10,"from .i_message_deleter import IMessageDeleter"],["bot_framework.protocols.i_message_sender",14,"from .i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_handler",11,"from .i_message_handler import IMessageHandler"],["bot_framework.protocols.i_message_core",9,"from .i_message_core import IMessageCore"],["bot_framework.protocols.i_next_step_handler_registrar",16,"from .i_next_step_handler_registrar import INextStepHandlerRegistrar"],["bot_framework.protocols.i_message_handler_registry",12,"from .i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.protocols.i_card_field_formatter",4,"from .i_card_field_formatter import ICardFieldFormatter"],["bot_framework.protocols.i_markdown_to_html_converter",8,"from .i_markdown_to_html_converter import IMarkdownToHtmlConverter"],["bot_framework.protocols.i_display_width_calculator",5,"from .i_display_width_calculator import IDisplayWidthCalculator"],["bot_framework.protocols.i_bot",19,"from .i_bot import IBot"],["bot_framework.protocols.i_message_service",15,"from .i_message_service import IMessageService"]],"bot_framework.role_management.repos.role_repo":[["bot_framework.role_management.repos.protocols.i_role_repo",5,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.entities.role",4,"from bot_framework.entities.role import Role"]],"bot_framework.language_management.loaders.language_loader":[],"bot_framework.decorators.role_checker":[["bot_framework.entities.bot_message",6,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.bot_callback",5,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.protocols.i_message_deleter":[],"bot_framework.step_flow.protocols.i_step_state_storage":[],"bot_framework.protocols.i_flow_router":[["bot_framework.entities.user",8,"from bot_framework.entities.user import User"]],"bot_framework.app.bot_application":[["bot_framework.language_management.validators",13,"from bot_framework.language_management.validators import MissingTranslationsValidator"],["bot_framework.telegram",24,"from bot_framework.telegram import CloseCallbackHandler, TelegramMessageCore"],["bot_framework.menus.language_menu",21,"from bot_framework.menus.language_menu import LanguageMenuFactory"],["bot_framework.protocols.i_callback_handler",22,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"],["bot_framework.flows.request_role_flow",7,"from bot_framework.flows.request_role_flow import RequestRoleFlowFactory"],["bot_framework.flow_management",6,"from bot_framework.flow_management import RedisFlowMessageStorage"],["bot_framework.flows.request_role_flow.repos",8,"from bot_framework.flows.request_role_flow.repos import ("],["bot_framework.role_management.repos",23,"from bot_framework.role_management.repos import RoleRepo, UserRepo"],["bot_framework.telegram.services",29,"from bot_framework.telegram.services import ("],["bot_framework.language_management.providers",15,"from bot_framework.language_management.providers import RedisPhraseProvider"],["bot_framework.menus",16,"from bot_framework.menus import ("],["bot_framework.migrations",53,"from bot_framework.migrations import apply_migrations"],["bot_framework.language_management.repos",12,"from bot_framework.language_management.repos import LanguageRepo"],["bot_framework.language_management.loaders",11,"from bot_framework.language_management.loaders import LanguageLoader, PhraseLoader"],["bot_framework.role_management.loaders",14,"from bot_framework.role_management.loaders import RoleLoader"]],"bot_framework.flow_management.services.flow_stack_validator":[["bot_framework.flow_management.flow_registry",5,"from bot_framework.flow_management.flow_registry import FlowRegistry"],["bot_framework.flow_management.protocols",6,"from bot_framework.flow_management.protocols import IFlowStackStorage"]],"bot_framework.flows.request_role_flow.protocols.i_role_list_presenter":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.protocols.i_message_core":[["bot_framework.protocols.i_message_handler_registry",11,"from .i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.protocols.i_next_step_handler_registrar",14,"from .i_next_step_handler_registrar import INextStepHandlerRegistrar"],["bot_framework.protocols.i_callback_handler_registry",9,"from .i_callback_handler_registry import ICallbackHandlerRegistry"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.protocols.i_message_sender",13,"from .i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_replacer",12,"from .i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_callback_answerer",8,"from .i_callback_answerer import ICallbackAnswerer"],["bot_framework.protocols.i_bot",15,"from .i_bot import IBot"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_message_deleter",10,"from .i_message_deleter import IMessageDeleter"]],"bot_framework.flow_management.protocols.i_flow_stack_storage":[["bot_framework.flow_management.entities",3,"from bot_framework.flow_management.entities import FlowStackEntry"]],"bot_framework.step_flow.base_step":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.entities.language_code":[],"bot_framework":[["bot_framework.entities.role",20,"from bot_framework.entities.role import Role"],["bot_framework.protocols.i_message_handler",30,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.protocols.i_message_replacer",32,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.entities.parse_mode",19,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.bot_callback",13,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.decorators.role_checker",8,"from bot_framework.decorators.role_checker import ("],["bot_framework.entities.button",16,"from bot_framework.entities.button import Button"],["bot_framework.entities.user",22,"from bot_framework.entities.user import User"],["bot_framework.protocols.i_message_deleter",29,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"],["bot_framework.entities.bot_user",15,"from bot_framework.entities.bot_user import BotUser"],["bot_framework.protocols.i_callback_answerer",23,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.protocols.i_flow_router",28,"from bot_framework.protocols.i_flow_router import IFlowRouter"],["bot_framework.entities.bot_message",14,"from bot_framework.entities.bot_message import BotMessage, BotMessageUser"],["bot_framework.protocols.i_callback_handler_registry",25,"from bot_framework.protocols.i_callback_handler_registry import ("],["bot_framework.protocols.i_notify_replacer",34,"from bot_framework.protocols.i_notify_replacer import INotifyReplacer"],["bot_framework.protocols.i_message_handler_registry",31,"from bot_framework.protocols.i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.entities.keyboard",17,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_callback_handler",24,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"],["bot_framework.entities.role_name",21,"from bot_framework.entities.role_name import RoleName"],["bot_framework.protocols.i_message_sender",33,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.language_code",18,"from bot_framework.entities.language_code import LanguageCode"]],"bot_framework.role_management.services.ensure_user_exists":[["bot_framework.entities",1,"from bot_framework.entities import RoleName, User"],["bot_framework.role_management.repos.protocols.i_user_repo",5,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.role_management.repos.protocols.i_role_repo",4,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.entities.bot_user",2,"from bot_framework.entities.bot_user import BotUser"],["bot_framework.protocols",3,"from bot_framework.protocols import IEnsureUserExists"]],"bot_framework.telegram.services.callback_answerer":[["bot_framework.telegram.services.telegram_message_core",6,"from .telegram_message_core import TelegramMessageCore"]],"bot_framework.flows.request_role_flow.handlers.role_selection_handler":[["bot_framework.role_management.repos.protocols.i_user_repo",13,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_answerer",10,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.flows.request_role_flow.exceptions",4,"from bot_framework.flows.request_role_flow.exceptions import NoSupervisorsFoundError"],["bot_framework.flows.request_role_flow.protocols",5,"from bot_framework.flows.request_role_flow.protocols import ("],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.language_management.repos.protocols.i_phrase_repo",9,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.protocols.i_message_sender",11,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.role_management.repos.protocols.i_role_repo",12,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"]],"bot_framework.protocols.i_message_service":[["bot_framework.protocols.i_message_deleter",3,"from bot_framework.protocols.i_message_deleter import IMessageDeleter"],["bot_framework.protocols.i_message_replacer",4,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.protocols.i_message_sender",5,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_notify_replacer",6,"from bot_framework.protocols.i_notify_replacer import INotifyReplacer"]],"bot_framework.entities":[["bot_framework.entities.button",4,"from .button import Button"],["bot_framework.entities.role_name",9,"from .role_name import RoleName"],["bot_framework.entities.language_code",6,"from .language_code import LanguageCode"],["bot_framework.entities.bot_message",2,"from .bot_message import BotMessage, BotMessageUser"],["bot_framework.entities.bot_callback",1,"from .bot_callback import BotCallback"],["bot_framework.entities.user",10,"from .user import User"],["bot_framework.entities.parse_mode",7,"from .parse_mode import ParseMode"],["bot_framework.entities.role",8,"from .role import Role"],["bot_framework.entities.bot_user",3,"from .bot_user import BotUser"],["bot_framework.entities.keyboard",5,"from .keyboard import Keyboard"]],"bot_framework.entities.keyboard":[["bot_framework.entities.button",3,"from bot_framework.entities.button import Button"]],"bot_framework.language_management.entities":[["bot_framework.language_management.entities.language",3,"from .language import Language"],["bot_framework.language_management.entities.phrase",4,"from .phrase import Phrase"],["bot_framework.entities",1,"from bot_framework.entities import LanguageCode"]],"bot_framework.language_management.entities.language":[],"bot_framework.telegram.protocols":[["bot_framework.protocols",1,"from bot_framework.protocols import ("],["bot_framework.telegram.protocols.i_markdown_escaper",20,"from .i_markdown_escaper import IMarkdownEscaper"]],"bot_framework.flow_management.protocols.i_flow_message_deleter":[],"bot_framework.flows":[["bot_framework.flows.request_role_flow",1,"from bot_framework.flows.request_role_flow import ("]],"bot_framework.telegram.middleware.ensure_user_middleware":[["bot_framework.telegram.middleware.telegram_base_middleware",5,"from bot_framework.telegram.middleware.telegram_base_middleware import ("],["bot_framework.entities.bot_user",3,"from bot_framework.entities.bot_user import BotUser"],["bot_framework.protocols",4,"from bot_framework.protocols import IEnsureUserExists"]],"bot_framework.telegram.services.markdown_to_html_converter":[["bot_framework.telegram.protocols",4,"from bot_framework.telegram.protocols import IMarkdownToHtmlConverter"]],"bot_framework.flows.request_role_flow.actions.role_rejection_notifier":[["bot_framework.entities.user",1,"from bot_framework.entities.user import User"],["bot_framework.language_management.repos.protocols.i_phrase_repo",2,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.protocols.i_message_sender",3,"from bot_framework.protocols.i_message_sender import IMessageSender"]],"bot_framework.entities.parse_mode":[],"bot_framework.language_management":[["bot_framework.language_management.repos",3,"from bot_framework.language_management.repos import LanguageRepo, PhraseRepo"],["bot_framework.language_management.entities",1,"from bot_framework.language_management.entities import Language, LanguageCode, Phrase"],["bot_framework.language_management.providers",2,"from bot_framework.language_management.providers import IPhraseProvider, PhraseProvider"],["bot_framework.language_management.repos.protocols",4,"from bot_framework.language_management.repos.protocols import ILanguageRepo, IPhraseRepo"]],"bot_framework.flow_management.repos":[["bot_framework.flow_management.repos.redis_flow_stack_storage",6,"from bot_framework.flow_management.repos.redis_flow_stack_storage import RedisFlowStackStorage"],["bot_framework.flow_management.repos.redis_flow_message_storage",3,"from bot_framework.flow_management.repos.redis_flow_message_storage import ("]],"bot_framework.base_protocols.read_sequence_by_user_id":[],"bot_framework.base_protocols.get_by_name":[],"bot_framework.menus.language_menu.i_language_menu_sender":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.flows.request_role_flow.entities":[["bot_framework.flows.request_role_flow.entities.request_role_flow_state",1,"from bot_framework.flows.request_role_flow.entities.request_role_flow_state import ("]],"bot_framework.entities.role_name":[],"bot_framework.role_management.services":[["bot_framework.role_management.services.ensure_user_exists",1,"from .ensure_user_exists import EnsureUserExists"]],"bot_framework.entities.role":[],"bot_framework.decorators":[["bot_framework.decorators.role_checker",1,"from bot_framework.decorators.role_checker import ("]],"bot_framework.flows.request_role_flow.presenters.role_list_presenter":[["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.protocols.i_message_sender",5,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.user",3,"from bot_framework.entities.user import User"],["bot_framework.language_management.repos.protocols.i_phrase_repo",4,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.role_management.repos.protocols.i_role_repo",6,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"]],"bot_framework.menus":[["bot_framework.menus.language_menu",7,"from bot_framework.menus.language_menu import ("],["bot_framework.menus.start_menu",1,"from bot_framework.menus.start_menu import ("],["bot_framework.menus.start_menu.main_menu_sender",6,"from bot_framework.menus.start_menu.main_menu_sender import MenuButtonConfig"]],"bot_framework.base_protocols.get_all":[],"bot_framework.protocols.i_remaining_time_formatter":[],"bot_framework.flow_management.flow_registry":[["bot_framework.protocols.i_flow_router",3,"from bot_framework.protocols.i_flow_router import IFlowRouter"]],"bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.flow_management.protocols.i_flow_stack_validator":[],"bot_framework.entities.bot_message":[],"bot_framework.flow_management.protocols":[["bot_framework.flow_management.protocols.i_flow_message_deleter",1,"from bot_framework.flow_management.protocols.i_flow_message_deleter import IFlowMessageDeleter"],["bot_framework.flow_management.protocols.i_flow_stack_validator",4,"from bot_framework.flow_management.protocols.i_flow_stack_validator import IFlowStackValidator"],["bot_framework.flow_management.protocols.i_flow_stack_storage",3,"from bot_framework.flow_management.protocols.i_flow_stack_storage import IFlowStackStorage"],["bot_framework.flow_management.protocols.i_flow_message_storage",2,"from bot_framework.flow_management.protocols.i_flow_message_storage import IFlowMessageStorage"]],"bot_framework.protocols.i_message_sender":[["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"]],"bot_framework.menus.start_menu.i_main_menu_sender":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"]],"bot_framework.step_flow._step_flow_router":[["bot_framework.step_flow.protocols.i_step",5,"from bot_framework.step_flow.protocols.i_step import IStep"],["bot_framework.entities.user",4,"from bot_framework.entities.user import User"],["bot_framework.entities",3,"from bot_framework.entities import BotCallback, BotMessage"],["bot_framework.step_flow.protocols.i_step_state_storage",6,"from bot_framework.step_flow.protocols.i_step_state_storage import IStepStateStorage"]],"bot_framework.language_management.entities.phrase":[],"bot_framework.language_management.validators.missing_translations_validator":[],"bot_framework.role_management.repos":[["bot_framework.role_management.repos.user_repo",2,"from .user_repo import UserRepo"],["bot_framework.role_management.repos.role_repo",1,"from .role_repo import RoleRepo"]],"bot_framework.language_management.loaders":[["bot_framework.language_management.loaders.phrase_loader",2,"from bot_framework.language_management.loaders.phrase_loader import PhraseLoader"],["bot_framework.language_management.loaders.language_loader",1,"from bot_framework.language_management.loaders.language_loader import LanguageLoader"]],"bot_framework.protocols.i_ensure_user_exists":[["bot_framework.entities.bot_user",3,"from bot_framework.entities.bot_user import BotUser"]],"bot_framework.protocols.i_display_width_calculator":[],"bot_framework.role_management.repos.protocols.i_user_repo":[["bot_framework.base_protocols",3,"from bot_framework.base_protocols import ("],["bot_framework.entities.user",10,"from bot_framework.entities.user import User"]],"bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage":[["bot_framework.flows.request_role_flow.entities",5,"from bot_framework.flows.request_role_flow.entities import RequestRoleFlowState"]],"bot_framework.flows.request_role_flow.exceptions":[],"bot_framework.telegram.protocols.i_markdown_escaper":[],"bot_framework.base_protocols":[["bot_framework.base_protocols.read_sequence_by_user_id",7,"from .read_sequence_by_user_id import ("],["bot_framework.base_protocols.get_by_key",4,"from .get_by_key import GetByKeyProtocol"],["bot_framework.base_protocols.get_all",3,"from .get_all import GetAllProtocol"],["bot_framework.base_protocols.update",10,"from .update import UpdateProtocol"],["bot_framework.base_protocols.delete",2,"from .delete import DeleteProtocol"],["bot_framework.base_protocols.create",1,"from .create import CreateProtocol"],["bot_framework.base_protocols.read",6,"from .read import ReadProtocol"],["bot_framework.base_protocols.get_by_name",5,"from .get_by_name import GetByNameProtocol"]],"bot_framework.role_management.repos.user_repo":[["bot_framework.entities.user",6,"from bot_framework.entities.user import User"],["bot_framework.role_management.repos.protocols.i_user_repo",7,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"]],"bot_framework.role_management.entities":[["bot_framework.entities",1,"from bot_framework.entities import Role, RoleName, User"],["bot_framework.role_management.entities.user_role",3,"from .user_role import UserRole"]],"bot_framework.language_management.loaders.phrase_loader":[],"bot_framework.protocols.i_card_field_formatter":[],"bot_framework.menus.language_menu.language_command_handler":[["bot_framework.role_management.repos.protocols.i_user_repo",3,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.entities.bot_message",1,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.menus.language_menu.i_language_menu_sender",2,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"]],"bot_framework.step_flow":[["bot_framework.step_flow.base_step",1,"from bot_framework.step_flow.base_step import BaseStep"],["bot_framework.step_flow.protocols",3,"from bot_framework.step_flow.protocols import IStep, IStepStateStorage"],["bot_framework.step_flow.flow",2,"from bot_framework.step_flow.flow import Flow"]],"bot_framework.protocols.i_message_replacer":[["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.protocols.i_callback_handler":[["bot_framework.protocols.i_callback_answerer",7,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.entities.bot_callback",6,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.services.remaining_time_formatter":[["bot_framework.protocols",4,"from bot_framework.protocols import IRemainingTimeFormatter"],["bot_framework.language_management.repos.protocols.i_phrase_repo",3,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.entities.bot_callback":[],"bot_framework.language_management.repos.protocols":[["bot_framework.language_management.repos.protocols.i_phrase_repo",2,"from .i_phrase_repo import IPhraseRepo"],["bot_framework.language_management.repos.protocols.i_language_repo",1,"from .i_language_repo import ILanguageRepo"]],"bot_framework.flow_management.protocols.i_flow_message_storage":[],"bot_framework.language_management.repos.phrase_repo":[["bot_framework.language_management.repos.protocols.i_phrase_repo",3,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.base_protocols.delete":[],"bot_framework.menus.language_menu.language_menu_sender":[["bot_framework.entities.user",3,"from bot_framework.entities.user import User"],["bot_framework.menus.language_menu.i_language_menu_sender",8,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.protocols.i_message_sender",10,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.language_management.repos.protocols.i_language_repo",4,"from bot_framework.language_management.repos.protocols.i_language_repo import ("],["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_message_replacer",9,"from bot_framework.protocols.i_message_replacer import IMessageReplacer"],["bot_framework.language_management.repos.protocols.i_phrase_repo",7,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"]],"bot_framework.protocols.i_bot":[],"bot_framework.telegram":[["bot_framework.telegram.middleware",1,"from .middleware import EnsureUserMiddleware, TelegramBaseMiddleware"],["bot_framework.telegram.protocols",2,"from .protocols import ("],["bot_framework.telegram.services",16,"from .services import ("]],"bot_framework.language_management.providers.protocols.i_phrase_provider":[],"bot_framework.telegram.middleware":[["bot_framework.telegram.middleware.ensure_user_middleware",1,"from .ensure_user_middleware import EnsureUserMiddleware"],["bot_framework.telegram.middleware.telegram_base_middleware",2,"from .telegram_base_middleware import TelegramBaseMiddleware"]],"bot_framework.role_management":[["bot_framework.role_management.repos",2,"from bot_framework.role_management.repos import RoleRepo, UserRepo"],["bot_framework.role_management.services",4,"from bot_framework.role_management.services import EnsureUserExists"],["bot_framework.role_management.entities",1,"from bot_framework.role_management.entities import Role, RoleName, User, UserRole"],["bot_framework.role_management.repos.protocols",3,"from bot_framework.role_management.repos.protocols import IRoleRepo, IUserRepo"]],"bot_framework.language_management.validators":[["bot_framework.language_management.validators.missing_translations_validator",3,"from bot_framework.language_management.validators.missing_translations_validator import ("]],"bot_framework.role_management.repos.protocols.i_role_repo":[["bot_framework.base_protocols",3,"from bot_framework.base_protocols import ("],["bot_framework.entities.role",7,"from bot_framework.entities.role import Role"]],"bot_framework.protocols.i_message_handler_registry":[["bot_framework.protocols.i_message_handler",4,"from bot_framework.protocols.i_message_handler import IMessageHandler"]],"bot_framework.flows.request_role_flow.protocols.i_role_request_sender":[["bot_framework.entities.user",4,"from bot_framework.entities.user import User"],["bot_framework.entities.role",3,"from bot_framework.entities.role import Role"]],"bot_framework.flows.request_role_flow.factory":[["bot_framework.flows.request_role_flow.presenters",13,"from bot_framework.flows.request_role_flow.presenters import RoleListPresenter"],["bot_framework.protocols.i_callback_handler_registry",23,"from bot_framework.protocols.i_callback_handler_registry import ("],["bot_framework.role_management.repos.protocols.i_role_repo",28,"from bot_framework.role_management.repos.protocols.i_role_repo import IRoleRepo"],["bot_framework.language_management.repos.protocols.i_phrase_repo",21,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.flows.request_role_flow.request_role_flow_router",18,"from bot_framework.flows.request_role_flow.request_role_flow_router import ("],["bot_framework.role_management.repos.protocols.i_user_repo",29,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.flows.request_role_flow.protocols",14,"from bot_framework.flows.request_role_flow.protocols import ("],["bot_framework.protocols.i_message_sender",27,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.protocols.i_message_handler_registry",26,"from bot_framework.protocols.i_message_handler_registry import IMessageHandlerRegistry"],["bot_framework.flows.request_role_flow.handlers",6,"from bot_framework.flows.request_role_flow.handlers import ("],["bot_framework.flows.request_role_flow.actions",1,"from bot_framework.flows.request_role_flow.actions import ("],["bot_framework.protocols.i_callback_answerer",22,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"]],"bot_framework.migrations":[["bot_framework.migrations.runner",1,"from bot_framework.migrations.runner import apply_migrations"]],"bot_framework.role_management.loaders":[["bot_framework.role_management.loaders.role_loader",1,"from bot_framework.role_management.loaders.role_loader import RoleLoader"]],"bot_framework.menus.start_menu.main_menu_sender":[["bot_framework.entities.keyboard",2,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.menus.start_menu.i_main_menu_sender",5,"from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender"],["bot_framework.entities.user",3,"from bot_framework.entities.user import User"],["bot_framework.protocols.i_message_sender",7,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.language_management.repos.protocols.i_phrase_repo",4,"from bot_framework.language_management.repos.protocols.i_phrase_repo import IPhraseRepo"],["bot_framework.entities.button",1,"from bot_framework.entities.button import Button"],["bot_framework.protocols.i_callback_handler",6,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"]],"bot_framework.flows.request_role_flow.request_role_flow_router":[["bot_framework.flows.request_role_flow.protocols",2,"from bot_framework.flows.request_role_flow.protocols import IRoleListPresenter"],["bot_framework.entities.user",1,"from bot_framework.entities.user import User"]],"bot_framework.language_management.repos":[["bot_framework.language_management.repos.phrase_repo",2,"from .phrase_repo import PhraseRepo"],["bot_framework.language_management.repos.language_repo",1,"from .language_repo import LanguageRepo"]],"bot_framework.menus.start_menu":[["bot_framework.menus.start_menu.i_main_menu_sender",1,"from bot_framework.menus.start_menu.i_main_menu_sender import IMainMenuSender"],["bot_framework.menus.start_menu.start_command_handler",3,"from bot_framework.menus.start_menu.start_command_handler import StartCommandHandler"],["bot_framework.menus.start_menu.main_menu_sender",2,"from bot_framework.menus.start_menu.main_menu_sender import MainMenuSender"]],"bot_framework.flow_management.repos.redis_flow_message_storage":[],"bot_framework.services.card_field_formatter":[["bot_framework.protocols",1,"from bot_framework.protocols import ICardFieldFormatter, IDisplayWidthCalculator"],["bot_framework.services.display_width_calculator",2,"from bot_framework.services.display_width_calculator import DisplayWidthCalculator"]],"bot_framework.app":[["bot_framework.app.bot_application",1,"from .bot_application import BotApplication"]],"bot_framework.flows.request_role_flow.handlers":[["bot_framework.flows.request_role_flow.handlers.approve_role_handler",1,"from bot_framework.flows.request_role_flow.handlers.approve_role_handler import ("],["bot_framework.flows.request_role_flow.handlers.request_role_command_handler",7,"from bot_framework.flows.request_role_flow.handlers.request_role_command_handler import ("],["bot_framework.flows.request_role_flow.handlers.role_selection_handler",10,"from bot_framework.flows.request_role_flow.handlers.role_selection_handler import ("],["bot_framework.flows.request_role_flow.handlers.show_roles_handler",13,"from bot_framework.flows.request_role_flow.handlers.show_roles_handler import ("],["bot_framework.flows.request_role_flow.handlers.reject_role_handler",4,"from bot_framework.flows.request_role_flow.handlers.reject_role_handler import ("]],"bot_framework.language_management.repos.language_repo":[["bot_framework.language_management.entities.language",4,"from bot_framework.language_management.entities.language import Language"],["bot_framework.language_management.repos.protocols.i_language_repo",5,"from bot_framework.language_management.repos.protocols.i_language_repo import ILanguageRepo"]],"bot_framework.base_protocols.create":[],"bot_framework.entities.bot_user":[],"bot_framework.flows.request_role_flow.presenters":[["bot_framework.flows.request_role_flow.presenters.role_list_presenter",1,"from bot_framework.flows.request_role_flow.presenters.role_list_presenter import ("]],"bot_framework.flows.request_role_flow.handlers.approve_role_handler":[["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.flows.request_role_flow.protocols",4,"from bot_framework.flows.request_role_flow.protocols import IRoleAssigner"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"]],"bot_framework.base_protocols.get_by_key":[],"bot_framework.protocols.i_callback_handler_registry":[["bot_framework.protocols.i_callback_handler",5,"from bot_framework.protocols.i_callback_handler import ICallbackHandler"]],"bot_framework.telegram.services.telegram_message_service":[["bot_framework.telegram.services.telegram_message_replacer",12,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",7,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.protocols.i_message_service",8,"from bot_framework.protocols.i_message_service import IMessageService"],["bot_framework.telegram.services.telegram_message_sender",13,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.services.telegram_message_deleter",11,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.telegram.services.telegram_notify_replacer",14,"from .telegram_notify_replacer import TelegramNotifyReplacer"]],"bot_framework.services":[["bot_framework.services.display_width_calculator",2,"from .display_width_calculator import DisplayWidthCalculator"],["bot_framework.services.remaining_time_formatter",3,"from .remaining_time_formatter import RemainingTimeFormatter"],["bot_framework.services.card_field_formatter",1,"from .card_field_formatter import CardFieldFormatter"]],"bot_framework.flows.request_role_flow.handlers.request_role_command_handler":[["bot_framework.protocols.i_message_handler",5,"from bot_framework.protocols.i_message_handler import IMessageHandler"],["bot_framework.entities.bot_message",1,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.flows.request_role_flow.protocols",2,"from bot_framework.flows.request_role_flow.protocols import ("]],"bot_framework.services.display_width_calculator":[["bot_framework.protocols",3,"from bot_framework.protocols import IDisplayWidthCalculator"]],"bot_framework.language_management.providers.phrase_provider":[["bot_framework.language_management.repos",2,"from bot_framework.language_management.repos import PhraseRepo"],["bot_framework.language_management.providers.protocols",1,"from bot_framework.language_management.providers.protocols import IPhraseProvider"]],"bot_framework.flows.request_role_flow.entities.request_role_flow_state":[],"bot_framework.telegram.services.telegram_message_core":[["bot_framework.telegram.services.telegram_message_deleter",24,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.telegram.services.next_step_handler_registrar",71,"from .next_step_handler_registrar import NextStepHandlerRegistrar"],["bot_framework.telegram.services.callback_answerer",20,"from .callback_answerer import CallbackAnswerer"],["bot_framework.telegram.services.telegram_message_replacer",25,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.entities.parse_mode",13,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.telegram.services.telegram_message_service",75,"from .telegram_message_service import TelegramMessageService"],["bot_framework.flow_management",14,"from bot_framework.flow_management import IFlowMessageStorage"],["bot_framework.telegram.services.callback_handler_registry",69,"from .callback_handler_registry import CallbackHandlerRegistry"],["bot_framework.telegram.services.telegram_message_deleter",72,"from .telegram_message_deleter import TelegramMessageDeleter"],["bot_framework.telegram.services.callback_handler_registry",21,"from .callback_handler_registry import CallbackHandlerRegistry"],["bot_framework.role_management.services",55,"from bot_framework.role_management.services import EnsureUserExists"],["bot_framework.telegram.services.message_handler_registry",22,"from .message_handler_registry import MessageHandlerRegistry"],["bot_framework.entities.bot_message",11,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.telegram.services.markdown_to_html_converter",17,"from .markdown_to_html_converter import MarkdownToHtmlConverter"],["bot_framework.telegram.services.telegram_message_sender",74,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.telegram.middleware",56,"from bot_framework.telegram.middleware import EnsureUserMiddleware"],["bot_framework.telegram.services.telegram_message_sender",26,"from .telegram_message_sender import TelegramMessageSender"],["bot_framework.role_management.repos",54,"from bot_framework.role_management.repos import RoleRepo, UserRepo"],["bot_framework.telegram.services.next_step_handler_registrar",23,"from .next_step_handler_registrar import NextStepHandlerRegistrar"],["bot_framework.telegram.services.telegram_message_service",27,"from .telegram_message_service import TelegramMessageService"],["bot_framework.telegram.services.message_handler_registry",70,"from .message_handler_registry import MessageHandlerRegistry"],["bot_framework.telegram.services.telegram_notify_replacer",76,"from .telegram_notify_replacer import TelegramNotifyReplacer"],["bot_framework.telegram.services.callback_answerer",68,"from .callback_answerer import CallbackAnswerer"],["bot_framework.entities.keyboard",12,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.telegram.services.telegram_message_replacer",73,"from .telegram_message_replacer import TelegramMessageReplacer"],["bot_framework.telegram.services.markdown_escaper",16,"from .markdown_escaper import MarkdownEscaper"]],"bot_framework.entities.user":[["bot_framework.entities.language_code",9,"from bot_framework.entities.language_code import LanguageCode"]],"bot_framework.role_management.loaders.role_loader":[],"bot_framework.protocols.i_message_handler":[["bot_framework.entities.bot_message",6,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.protocols.i_notify_replacer":[["bot_framework.entities.keyboard",4,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.entities.parse_mode",5,"from bot_framework.entities.parse_mode import ParseMode"],["bot_framework.entities.bot_message",3,"from bot_framework.entities.bot_message import BotMessage"]],"bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage":[["bot_framework.flows.request_role_flow.entities",3,"from bot_framework.flows.request_role_flow.entities import RequestRoleFlowState"]],"bot_framework.language_management.repos.protocols.i_phrase_repo":[],"bot_framework.role_management.repos.protocols":[["bot_framework.role_management.repos.protocols.i_role_repo",1,"from .i_role_repo import IRoleRepo"],["bot_framework.role_management.repos.protocols.i_user_repo",2,"from .i_user_repo import IUserRepo"]],"bot_framework.role_management.services.protocols":[],"bot_framework.flow_management.services.flow_stack_navigator":[["bot_framework.entities.user",6,"from bot_framework.entities.user import User"],["bot_framework.flow_management.protocols",9,"from bot_framework.flow_management.protocols import ("],["bot_framework.flow_management.entities",7,"from bot_framework.flow_management.entities import FlowStackEntry"],["bot_framework.flow_management.flow_registry",8,"from bot_framework.flow_management.flow_registry import FlowRegistry"]],"bot_framework.flow_management.entities.flow_stack_entry":[],"bot_framework.flows.request_role_flow":[["bot_framework.flows.request_role_flow.request_role_flow_router",3,"from bot_framework.flows.request_role_flow.request_role_flow_router import ("],["bot_framework.flows.request_role_flow.factory",1,"from bot_framework.flows.request_role_flow.factory import RequestRoleFlowFactory"],["bot_framework.flows.request_role_flow.protocols",2,"from bot_framework.flows.request_role_flow.protocols import IRequestRoleFlowRouter"]],"bot_framework.protocols.i_markdown_to_html_converter":[],"bot_framework.menus.language_menu.show_language_menu_handler":[["bot_framework.menus.language_menu.i_language_menu_sender",4,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"]],"bot_framework.telegram.services.telegram_message_sender":[["bot_framework.telegram.services.telegram_message_core",10,"from .telegram_message_core import TelegramMessageCore"],["bot_framework.entities.keyboard",6,"from bot_framework.entities.keyboard import Keyboard"],["bot_framework.protocols.i_message_sender",8,"from bot_framework.protocols.i_message_sender import IMessageSender"],["bot_framework.entities.bot_message",5,"from bot_framework.entities.bot_message import BotMessage"],["bot_framework.entities.parse_mode",7,"from bot_framework.entities.parse_mode import ParseMode"]],"bot_framework.protocols.i_callback_answerer":[],"bot_framework.menus.language_menu.select_language_handler":[["bot_framework.menus.language_menu.i_language_menu_sender",4,"from bot_framework.menus.language_menu.i_language_menu_sender import ILanguageMenuSender"],["bot_framework.entities.bot_callback",3,"from bot_framework.entities.bot_callback import BotCallback"],["bot_framework.role_management.repos.protocols.i_user_repo",6,"from bot_framework.role_management.repos.protocols.i_user_repo import IUserRepo"],["bot_framework.protocols.i_callback_answerer",5,"from bot_framework.protocols.i_callback_answerer import ICallbackAnswerer"]]}
@@ -1 +0,0 @@
1
- {"bot_framework.role_management.entities.user_role": 1770121633.5019765, "bot_framework.telegram.services.next_step_handler_registrar": 1770121633.5039766, "bot_framework.step_flow.protocols.i_step": 1770121633.5029767, "bot_framework.flow_management.flow_registry": 1770121633.4969766, "bot_framework.language_management.providers": 1770121633.4989765, "bot_framework.flows.request_role_flow.protocols.i_role_assigner": 1770121633.4989765, "bot_framework.telegram.services.telegram_message_core": 1770121633.5039766, "bot_framework.app": 1770121633.4949765, "bot_framework.flows.request_role_flow.handlers.request_role_command_handler": 1770121633.4979765, "bot_framework.flows.request_role_flow.actions.role_rejection_notifier": 1770121633.4979765, "bot_framework.flows.request_role_flow.presenters.role_list_presenter": 1770121633.4979765, "bot_framework.flows.request_role_flow.protocols.i_role_request_sender": 1770121633.4989765, "bot_framework.telegram.middleware.ensure_user_middleware": 1770121633.5029767, "bot_framework.entities.keyboard": 1770121633.4959764, "bot_framework.menus.start_menu.i_main_menu_sender": 1770121633.4999766, "bot_framework.protocols.i_flow_router": 1770121633.5009766, "bot_framework.protocols.i_notify_replacer": 1770121633.5019765, "bot_framework.telegram": 1770121633.5029767, "bot_framework.flow_management.protocols.i_flow_message_storage": 1770121633.4969766, "bot_framework.menus.start_menu": 1770121633.4999766, "bot_framework.flows.request_role_flow.repos": 1770121633.4989765, "bot_framework.telegram.protocols": 1770121633.5029767, "bot_framework.protocols.i_markdown_to_html_converter": 1770121633.5009766, "bot_framework.telegram.services.callback_handler_registry": 1770121633.5029767, "bot_framework.language_management.repos.protocols": 1770121633.4999766, "bot_framework.flows.request_role_flow.protocols.i_role_rejection_notifier": 1770121633.4989765, "bot_framework.telegram.services.callback_answerer": 1770121633.5029767, "bot_framework.role_management.repos": 1770121633.5019765, "bot_framework.flow_management": 1770121633.4969766, "bot_framework.base_protocols.delete": 1770121633.4959764, "bot_framework.protocols.i_message_core": 1770121633.5009766, "bot_framework.protocols.i_card_field_formatter": 1770121633.5009766, "bot_framework.protocols.i_message_handler": 1770121633.5009766, "bot_framework.language_management": 1770121633.4989765, "bot_framework.language_management.loaders.language_loader": 1770121633.4989765, "bot_framework.flows.request_role_flow.factory": 1770121633.4979765, "bot_framework.telegram.services.markdown_escaper": 1770121633.5029767, "bot_framework.decorators": 1770121633.4959764, "bot_framework.entities.button": 1770121633.4959764, "bot_framework.role_management.entities": 1770121633.5019765, "bot_framework.base_protocols.create": 1770121633.4959764, "bot_framework.role_management.loaders": 1770121633.5019765, "bot_framework.language_management.providers.phrase_provider": 1770121633.4989765, "bot_framework.language_management.loaders": 1770121633.4989765, "bot_framework.step_flow.protocols.i_step_state_storage": 1770121633.5029767, "bot_framework.flow_management.entities": 1770121633.4969766, "bot_framework.role_management.repos.protocols.i_role_repo": 1770121633.5019765, "bot_framework.services": 1770121633.5019765, "bot_framework.protocols.i_next_step_handler_registrar": 1770121633.5019765, "bot_framework.language_management.entities.phrase": 1770121633.4989765, "bot_framework.telegram.services.markdown_to_html_converter": 1770121633.5039766, "bot_framework.step_flow._step_flow_router": 1770143393.5018241, "bot_framework.flows": 1770121633.4969766, "bot_framework.flows.request_role_flow.entities.request_role_flow_state": 1770121633.4979765, "bot_framework.protocols.i_message_replacer": 1770121633.5009766, "bot_framework.menus.start_menu.main_menu_sender": 1770121633.4999766, "bot_framework.flows.request_role_flow.actions": 1770121633.4979765, "bot_framework.entities.bot_user": 1770121633.4959764, "bot_framework.menus.language_menu.select_language_handler": 1770121633.4999766, "bot_framework.language_management.entities.language": 1770121633.4989765, "bot_framework.services.card_field_formatter": 1770121633.5029767, "bot_framework.app.bot_application": 1770121633.4949765, "bot_framework.entities.role": 1770121633.4959764, "bot_framework.language_management.providers.redis_phrase_provider": 1770121633.4989765, "bot_framework.protocols.i_message_service": 1770121633.5009766, "bot_framework.base_protocols.read": 1770121633.4959764, "bot_framework.protocols.i_bot": 1770121633.5009766, "bot_framework.flow_management.services.flow_message_deleter": 1770121633.4969766, "bot_framework.flow_management.protocols.i_flow_message_deleter": 1770121633.4969766, "bot_framework.protocols.i_remaining_time_formatter": 1770121633.5019765, "bot_framework.flows.request_role_flow.handlers.show_roles_handler": 1770121633.4979765, "bot_framework.flow_management.entities.flow_stack_entry": 1770121633.4969766, "bot_framework.migrations.runner": 1770121633.5009766, "bot_framework.flow_management.services.flow_stack_validator": 1770121633.4969766, "bot_framework.telegram.services.telegram_message_replacer": 1770121633.5039766, "bot_framework.menus.language_menu": 1770121633.4999766, "bot_framework.menus.language_menu.language_menu_sender": 1770121633.4999766, "bot_framework.flows.request_role_flow.repos.redis_request_role_flow_state_storage": 1770121633.4989765, "bot_framework.flows.request_role_flow.protocols.i_role_list_presenter": 1770121633.4989765, "bot_framework.flow_management.protocols": 1770121633.4969766, "bot_framework.menus.language_menu.language_command_handler": 1770121633.4999766, "bot_framework.protocols.i_message_handler_registry": 1770121633.5009766, "bot_framework.telegram.protocols.i_markdown_escaper": 1770121633.5029767, "bot_framework.protocols.i_ensure_user_exists": 1770121633.5009766, "bot_framework.telegram.middleware.telegram_base_middleware": 1770121633.5029767, "bot_framework.language_management.providers.protocols.i_phrase_provider": 1770121633.4989765, "bot_framework.decorators.role_checker": 1770121633.4959764, "bot_framework.telegram.services.close_callback_handler": 1770121633.5029767, "bot_framework.protocols": 1770121633.5009766, "bot_framework.entities.parse_mode": 1770121633.4959764, "bot_framework.menus.language_menu.factory": 1770121633.4999766, "bot_framework.language_management.repos.protocols.i_language_repo": 1770121633.4999766, "bot_framework.flows.request_role_flow.protocols": 1770121633.4979765, "bot_framework.entities.bot_callback": 1770121633.4959764, "bot_framework.telegram.middleware": 1770121633.5029767, "bot_framework.role_management.repos.user_repo": 1770121633.5019765, "bot_framework.telegram.services.message_handler_registry": 1770121633.5039766, "bot_framework.language_management.validators.missing_translations_validator": 1770121633.4999766, "bot_framework.protocols.i_callback_handler_registry": 1770121633.5009766, "bot_framework.migrations": 1770121633.5009766, "bot_framework.entities": 1770143425.8891168, "bot_framework.protocols.i_callback_handler": 1770121633.5009766, "bot_framework.role_management.loaders.role_loader": 1770121633.5019765, "bot_framework.flows.request_role_flow.actions.role_request_sender": 1770121633.4979765, "bot_framework.services.display_width_calculator": 1770121633.5029767, "bot_framework.base_protocols.get_by_key": 1770121633.4959764, "bot_framework.flows.request_role_flow.entities": 1770121633.4979765, "bot_framework.flows.request_role_flow.handlers.role_selection_handler": 1770121633.4979765, "bot_framework.language_management.repos.language_repo": 1770121633.4999766, "bot_framework.services.remaining_time_formatter": 1770121633.5029767, "bot_framework.step_flow.protocols": 1770121633.5029767, "bot_framework.flows.request_role_flow.protocols.i_request_role_flow_state_storage": 1770121633.4989765, "bot_framework.flows.request_role_flow.handlers": 1770121633.4979765, "bot_framework.telegram.services.telegram_message_deleter": 1770121633.5039766, "bot_framework.flows.request_role_flow.protocols.i_request_role_flow_router": 1770121633.4979765, "bot_framework.role_management.repos.protocols": 1770121633.5019765, "bot_framework.entities.user": 1770121633.4969766, "bot_framework.role_management": 1770121633.5019765, "bot_framework.menus.start_menu.start_command_handler": 1770121633.4999766, "bot_framework.role_management.repos.protocols.i_user_repo": 1770121633.5019765, "bot_framework.language_management.validators": 1770121633.4999766, "bot_framework.flows.request_role_flow.presenters": 1770121633.4979765, "bot_framework.menus": 1770121633.4999766, "bot_framework.entities.role_name": 1770121633.4969766, "bot_framework.protocols.i_callback_answerer": 1770121633.5009766, "bot_framework.flows.request_role_flow": 1770121633.4979765, "bot_framework.flow_management.protocols.i_flow_stack_validator": 1770121633.4969766, "bot_framework.flows.request_role_flow.handlers.approve_role_handler": 1770121633.4979765, "bot_framework.menus.language_menu.i_language_menu_sender": 1770121633.4999766, "bot_framework.role_management.services.protocols": 1770121633.5019765, "bot_framework.role_management.repos.role_repo": 1770121633.5019765, "bot_framework.flow_management.services": 1770121633.4969766, "bot_framework.entities.bot_message": 1770121633.4959764, "bot_framework.protocols.i_display_width_calculator": 1770121633.5009766, "bot_framework.language_management.providers.protocols": 1770121633.4989765, "bot_framework.protocols.i_message_sender": 1770121633.5009766, "bot_framework.language_management.repos": 1770121633.4999766, "bot_framework": 1770121633.4949765, "bot_framework.protocols.i_middleware": 1770121633.5009766, "bot_framework.flows.request_role_flow.actions.role_assigner": 1770121633.4979765, "bot_framework.role_management.services": 1770121633.5019765, "bot_framework.step_flow.flow": 1770143417.6550417, "bot_framework.flow_management.repos.redis_flow_stack_storage": 1770121633.4969766, "bot_framework.role_management.services.ensure_user_exists": 1770121633.5019765, "bot_framework.language_management.entities": 1770121633.4989765, "bot_framework.telegram.services.telegram_message_service": 1770121633.5039766, "bot_framework.base_protocols.get_all": 1770121633.4959764, "bot_framework.flows.request_role_flow.exceptions": 1770121633.4979765, "bot_framework.base_protocols.get_by_name": 1770121633.4959764, "bot_framework.telegram.services": 1770121633.5029767, "bot_framework.language_management.repos.protocols.i_phrase_repo": 1770121633.4999766, "bot_framework.telegram.services.telegram_notify_replacer": 1770121633.5039766, "bot_framework.language_management.loaders.phrase_loader": 1770121633.4989765, "bot_framework.menus.language_menu.show_language_menu_handler": 1770121633.4999766, "bot_framework.step_flow": 1770121633.5029767, "bot_framework.flow_management.protocols.i_flow_stack_storage": 1770121633.4969766, "bot_framework.flow_management.services.flow_stack_navigator": 1770121633.4969766, "bot_framework.flow_management.repos": 1770121633.4969766, "bot_framework.base_protocols": 1770121633.4959764, "bot_framework.protocols.i_message_deleter": 1770121633.5009766, "bot_framework.flows.request_role_flow.request_role_flow_router": 1770121633.4989765, "bot_framework.base_protocols.read_sequence_by_user_id": 1770121633.4959764, "bot_framework.flows.request_role_flow.handlers.reject_role_handler": 1770121633.4979765, "bot_framework.telegram.services.telegram_message_sender": 1770121633.5039766, "bot_framework.language_management.repos.phrase_repo": 1770121633.4999766, "bot_framework.flow_management.repos.redis_flow_message_storage": 1770121633.4969766, "bot_framework.step_flow.base_step": 1770121633.5029767, "bot_framework.entities.language_code": 1770121633.4959764, "bot_framework.base_protocols.update": 1770121633.4959764}
File without changes
File without changes