python-trueconf-bot 1.1.10__tar.gz → 1.2.0__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 (207) hide show
  1. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/.gitignore +2 -1
  2. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/PKG-INFO +4 -3
  3. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/learn/files.md +46 -0
  4. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/hooks/llms_txt.py +60 -24
  5. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/learn/files.md +45 -0
  6. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/pyproject.toml +3 -4
  7. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/python_trueconf_bot.egg-info/PKG-INFO +4 -3
  8. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/python_trueconf_bot.egg-info/SOURCES.txt +15 -0
  9. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/python_trueconf_bot.egg-info/requires.txt +5 -1
  10. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/_version.py +3 -3
  11. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/client/bot.py +420 -130
  12. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/dispatcher/router.py +135 -2
  13. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/incoming_update_method.py +4 -0
  14. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/message_type.py +4 -0
  15. python_trueconf_bot-1.2.0/trueconf/exceptions.py +113 -0
  16. python_trueconf_bot-1.2.0/trueconf/loggers.py +19 -0
  17. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/__init__.py +2 -0
  18. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/auth.py +3 -2
  19. python_trueconf_bot-1.2.0/trueconf/methods/clear_chat_history.py +22 -0
  20. python_trueconf_bot-1.2.0/trueconf/methods/edit_chat_avatar.py +22 -0
  21. python_trueconf_bot-1.2.0/trueconf/methods/edit_chat_title.py +22 -0
  22. python_trueconf_bot-1.2.0/trueconf/methods/get_file_upload_limits.py +16 -0
  23. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/remove_participant_from_chat.py +3 -1
  24. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/send_file.py +13 -7
  25. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/upload_file.py +2 -0
  26. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/__init__.py +4 -0
  27. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/base.py +0 -1
  28. python_trueconf_bot-1.2.0/trueconf/types/content/edit_chat_title.py +8 -0
  29. python_trueconf_bot-1.2.0/trueconf/types/content/location.py +10 -0
  30. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/input_file.py +185 -87
  31. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/last_message.py +12 -1
  32. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/message.py +11 -1
  33. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/parser.py +30 -7
  34. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/__init__.py +4 -0
  35. python_trueconf_bot-1.2.0/trueconf/types/requests/changed_file_upload_limits.py +19 -0
  36. python_trueconf_bot-1.2.0/trueconf/types/requests/cleared_chat_history.py +9 -0
  37. python_trueconf_bot-1.2.0/trueconf/types/requests/edited_chat_avatar.py +9 -0
  38. python_trueconf_bot-1.2.0/trueconf/types/requests/edited_chat_title.py +9 -0
  39. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/__init__.py +46 -42
  40. python_trueconf_bot-1.2.0/trueconf/types/responses/clear_chat_history_response.py +8 -0
  41. python_trueconf_bot-1.2.0/trueconf/types/responses/edit_chat_avatar_response.py +8 -0
  42. python_trueconf_bot-1.2.0/trueconf/types/responses/edit_chat_title_response.py +9 -0
  43. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_chat_by_id_response.py +1 -0
  44. python_trueconf_bot-1.2.0/trueconf/types/responses/get_file_upload_limits_response.py +16 -0
  45. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/utils/__init__.py +1 -0
  46. python_trueconf_bot-1.2.0/trueconf/utils/split_text.py +603 -0
  47. python_trueconf_bot-1.1.10/trueconf/exceptions.py +0 -21
  48. python_trueconf_bot-1.1.10/trueconf/loggers.py +0 -4
  49. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/.github/workflows/docs.yml +0 -0
  50. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/.github/workflows/release-test.yml +0 -0
  51. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/.github/workflows/release.yml +0 -0
  52. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/LICENSE +0 -0
  53. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/README-PyPI.md +0 -0
  54. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/README-ru.md +0 -0
  55. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/README.md +0 -0
  56. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/assets/head_en.png +0 -0
  57. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/assets/head_ru.png +0 -0
  58. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/assets/logo.svg +0 -0
  59. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/examples/echo_bot.md +0 -0
  60. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/examples/multibot.md +0 -0
  61. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/features.md +0 -0
  62. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/img/head.png +0 -0
  63. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/img/router_scheme_en.svg +0 -0
  64. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/index.md +0 -0
  65. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/learn/enums.md +0 -0
  66. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/learn/filters.md +0 -0
  67. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/learn/getting-started.md +0 -0
  68. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/learn/parse-messages.md +0 -0
  69. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/learn/types.md +0 -0
  70. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/Bot.md +0 -0
  71. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/Dispatcher.md +0 -0
  72. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/Enums.md +0 -0
  73. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/Responses.md +0 -0
  74. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/Router.md +0 -0
  75. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/Types.md +0 -0
  76. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/reference/index.md +0 -0
  77. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/en/release_notes.md +0 -0
  78. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/img/chatbot.svg +0 -0
  79. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/img/favicon.ico +0 -0
  80. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/img/logo.svg +0 -0
  81. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/overrides/main.html +0 -0
  82. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/examples/echo_bot.md +0 -0
  83. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/examples/multibot.md +0 -0
  84. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/features.md +0 -0
  85. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/img/head.png +0 -0
  86. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/img/router_scheme_ru.svg +0 -0
  87. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/index.md +0 -0
  88. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/learn/enums.md +0 -0
  89. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/learn/filters.md +0 -0
  90. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/learn/getting-started.md +0 -0
  91. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/learn/parse-messages.md +0 -0
  92. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/learn/types.md +0 -0
  93. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/ru/release_notes.md +0 -0
  94. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/docs/stylesheets/extra.css +0 -0
  95. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/README-ru.md +0 -0
  96. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/README.md +0 -0
  97. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/add_big_list_users_to_channel.py +0 -0
  98. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/filters.py +0 -0
  99. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/report_bot.py +0 -0
  100. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/update_token.py +0 -0
  101. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/examples/webhook.py +0 -0
  102. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/mkdocs.yml +0 -0
  103. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/python_trueconf_bot.egg-info/dependency_links.txt +0 -0
  104. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/python_trueconf_bot.egg-info/top_level.txt +0 -0
  105. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/requirements-docs.txt +0 -0
  106. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/requirements.txt +0 -0
  107. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/setup.cfg +0 -0
  108. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/__init__.py +0 -0
  109. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/client/__init__.py +0 -0
  110. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/client/context_controller.py +0 -0
  111. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/client/session.py +0 -0
  112. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/dispatcher/__init__.py +0 -0
  113. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/dispatcher/dispatcher.py +0 -0
  114. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/__init__.py +0 -0
  115. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/aouth_error.py +0 -0
  116. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/chat_participant_role.py +0 -0
  117. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/chat_type.py +0 -0
  118. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/envelope_author_type.py +0 -0
  119. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/file_ready_state.py +0 -0
  120. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/parse_mode.py +0 -0
  121. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/survey_type.py +0 -0
  122. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/enums/update_type.py +0 -0
  123. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/filters/__init__.py +0 -0
  124. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/filters/base.py +0 -0
  125. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/filters/command.py +0 -0
  126. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/filters/instance_of.py +0 -0
  127. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/filters/message.py +0 -0
  128. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/filters/method.py +0 -0
  129. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/add_participant_to_chat.py +0 -0
  130. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/base.py +0 -0
  131. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/change_participant_role.py +0 -0
  132. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/create_channel.py +0 -0
  133. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/create_favorites_chat.py +0 -0
  134. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/create_group_chat.py +0 -0
  135. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/create_p2p_chat.py +0 -0
  136. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/edit_message.py +0 -0
  137. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/edit_survey.py +0 -0
  138. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/forward_message.py +0 -0
  139. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_chat_by_id.py +0 -0
  140. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_chat_history.py +0 -0
  141. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_chat_participants.py +0 -0
  142. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_chats.py +0 -0
  143. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_file_info.py +0 -0
  144. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_message_by_id.py +0 -0
  145. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/get_user_display_name.py +0 -0
  146. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/has_chat_participant.py +0 -0
  147. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/remove_chat.py +0 -0
  148. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/remove_message.py +0 -0
  149. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/send_message.py +0 -0
  150. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/send_survey.py +0 -0
  151. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/subscribe_file_progress.py +0 -0
  152. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/methods/unsubscribe_file_progress.py +0 -0
  153. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/py.typed +0 -0
  154. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/author_box.py +0 -0
  155. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/chat_participant.py +0 -0
  156. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/__init__.py +0 -0
  157. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/attachment.py +0 -0
  158. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/chat_created.py +0 -0
  159. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/document.py +0 -0
  160. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/forward_message.py +0 -0
  161. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/photo.py +0 -0
  162. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/remove_participant.py +0 -0
  163. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/sticker.py +0 -0
  164. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/survey.py +0 -0
  165. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/text.py +0 -0
  166. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/content/video.py +0 -0
  167. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/added_chat_participant.py +0 -0
  168. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/changed_participant_role.py +0 -0
  169. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/created_channel.py +0 -0
  170. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/created_favorites_chat.py +0 -0
  171. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/created_group_chat.py +0 -0
  172. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/created_personal_chat.py +0 -0
  173. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/edited_message.py +0 -0
  174. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/removed_chat.py +0 -0
  175. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/removed_chat_participant.py +0 -0
  176. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/removed_message.py +0 -0
  177. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/requests/uploading_progress.py +0 -0
  178. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/add_chat_participant_response.py +0 -0
  179. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/api_error.py +0 -0
  180. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/auth_response_payload.py +0 -0
  181. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/change_participant_role_response.py +0 -0
  182. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/create_channel_response.py +0 -0
  183. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/create_favorites_chat_response.py +0 -0
  184. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/create_group_chat_response.py +0 -0
  185. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/create_p2p_chat_response.py +0 -0
  186. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/edit_message_response.py +0 -0
  187. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/edit_survey_response.py +0 -0
  188. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/forward_message_response.py +0 -0
  189. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_chat_history_response.py +0 -0
  190. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_chat_participants_response.py +0 -0
  191. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_chats_response.py +0 -0
  192. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_file_info_response.py +0 -0
  193. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_message_by_id_response.py +0 -0
  194. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/get_user_display_name_response.py +0 -0
  195. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/has_chat_participant_response.py +0 -0
  196. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/remove_chat_participant_response.py +0 -0
  197. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/remove_chat_response.py +0 -0
  198. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/remove_message_response.py +0 -0
  199. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/send_file_response.py +0 -0
  200. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/send_message_response.py +0 -0
  201. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/send_survey_response.py +0 -0
  202. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/subscribe_file_progress_response.py +0 -0
  203. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/unsubscribe_file_progress_response.py +0 -0
  204. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/responses/upload_file_response.py +0 -0
  205. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/types/update.py +0 -0
  206. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/utils/generate_secret_for_survey.py +0 -0
  207. {python_trueconf_bot-1.1.10 → python_trueconf_bot-1.2.0}/trueconf/utils/token.py +0 -0
@@ -184,4 +184,5 @@ trueconf/_version.py
184
184
  *.DS_Store
185
185
 
186
186
  .venv*
187
- venv*
187
+ venv*
188
+ /gitignore/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.1.10
3
+ Version: 1.2.0
4
4
  Summary: Lightweight and powerful framework for the TrueConf Server Chatbot API
5
5
  Author-email: TrueConf LLC <info@trueconf.com>, Anton Baadzhi <baadzhianton@gmail.com>
6
6
  License-Expression: BSD-3-Clause-Clear
@@ -31,8 +31,9 @@ Requires-Dist: magic-filter
31
31
  Requires-Dist: aiohttp
32
32
  Requires-Dist: async-property
33
33
  Requires-Dist: typing_extensions>=4.15.0
34
- Provides-Extra: python-magic
35
- Requires-Dist: python-magic>=0.4.27; extra == "python-magic"
34
+ Requires-Dist: python-magic>=0.4.27; sys_platform != "win32"
35
+ Requires-Dist: python-magic-bin==0.4.14; sys_platform == "win32"
36
+ Requires-Dist: filetype
36
37
  Dynamic: license-file
37
38
 
38
39
  <p align="center">
@@ -141,3 +141,49 @@ await bot.download_file_by_id(
141
141
  dest_path="document.pdf"
142
142
  )
143
143
  ```
144
+
145
+ ## MIME Type Detection with python-magic
146
+
147
+ A file’s MIME type can be detected automatically. The library supports two approaches:
148
+
149
+ * **By file extension** — works without additional dependencies, but may be inaccurate.
150
+ * **By file content (bytes)** — significantly more accurate, but requires `python-magic`.
151
+
152
+ ### How It Works
153
+
154
+ The `python-magic` package does not determine MIME types on its own. It is a Python wrapper around the native **libmagic** library written in C, which is what actually identifies a file type based on its contents.
155
+
156
+ That is why `python-magic` may not work out of the box on some systems: the Python package is installed via `pip`, but the system library `libmagic` must be installed separately.
157
+
158
+ If `libmagic` is missing, importing `magic` may fail with an error such as:
159
+
160
+ * `ImportError: failed to find libmagic. Check your installation`
161
+
162
+ ### Installation
163
+
164
+ Install the system dependencies:
165
+
166
+ * **macOS (Homebrew):**
167
+
168
+ ```bash
169
+ brew install libmagic
170
+ ```
171
+
172
+ * **Linux (Debian/Ubuntu):**
173
+
174
+ ```bash
175
+ sudo apt install libmagic1
176
+ ```
177
+
178
+ * **Windows:**
179
+
180
+ ```bash
181
+ pip install python-magic-bin
182
+ ```
183
+
184
+ We also recommend reviewing the repository: [https://github.com/ahupp/python-magic](https://github.com/ahupp/python-magic).
185
+
186
+ ### Notes
187
+
188
+ * When `python-magic` is available, the MIME type is detected **from the file bytes**, which is usually more accurate than detecting it by filename or extension.
189
+
@@ -1,11 +1,10 @@
1
-
2
1
  import os
3
2
  import re
4
3
  import subprocess
5
4
  from datetime import datetime, timezone
6
5
  from html import unescape
7
6
  from importlib.metadata import PackageNotFoundError, version as package_version
8
- from urllib.parse import urljoin
7
+
9
8
 
10
9
  from mkdocs.utils import log
11
10
 
@@ -164,8 +163,12 @@ def html_to_markdown(html: str) -> str:
164
163
 
165
164
  text = html
166
165
 
167
- text = re.sub(r"<script\b[^>]*>.*?</script>", "", text, flags=re.DOTALL | re.IGNORECASE)
168
- text = re.sub(r"<style\b[^>]*>.*?</style>", "", text, flags=re.DOTALL | re.IGNORECASE)
166
+ text = re.sub(
167
+ r"<script\b[^>]*>.*?</script>", "", text, flags=re.DOTALL | re.IGNORECASE
168
+ )
169
+ text = re.sub(
170
+ r"<style\b[^>]*>.*?</style>", "", text, flags=re.DOTALL | re.IGNORECASE
171
+ )
169
172
  text = re.sub(
170
173
  r"<a[^>]*class=\"[^\"]*headerlink[^\"]*\"[^>]*>.*?</a>",
171
174
  "",
@@ -241,7 +244,9 @@ def html_to_markdown(html: str) -> str:
241
244
  pattern = rf"<h{level}[^>]*>(.*?)</h{level}>"
242
245
  text = re.sub(
243
246
  pattern,
244
- lambda match, lvl=level: f"\n\n{'#' * lvl} {strip_tags(match.group(1))}\n\n",
247
+ lambda match, lvl=level: (
248
+ f"\n\n{'#' * lvl} {strip_tags(match.group(1))}\n\n"
249
+ ),
245
250
  text,
246
251
  flags=re.DOTALL | re.IGNORECASE,
247
252
  )
@@ -284,14 +289,11 @@ def get_version() -> str:
284
289
  log.debug(f"llms-txt: Failed to read package metadata version: {exc}")
285
290
 
286
291
  try:
287
- return (
288
- subprocess.check_output(
289
- ["git", "describe", "--tags", "--abbrev=0"],
290
- stderr=subprocess.DEVNULL,
291
- text=True,
292
- )
293
- .strip()
294
- )
292
+ return subprocess.check_output(
293
+ ["git", "describe", "--tags", "--abbrev=0"],
294
+ stderr=subprocess.DEVNULL,
295
+ text=True,
296
+ ).strip()
295
297
  except Exception as exc: # pragma: no cover
296
298
  log.debug(f"llms-txt: Failed to read git version: {exc}")
297
299
 
@@ -306,7 +308,9 @@ def get_page_title(html: str, fallback: str) -> str:
306
308
  if title:
307
309
  return title
308
310
 
309
- title_match = re.search(r"<title[^>]*>(.*?)</title>", html, re.DOTALL | re.IGNORECASE)
311
+ title_match = re.search(
312
+ r"<title[^>]*>(.*?)</title>", html, re.DOTALL | re.IGNORECASE
313
+ )
310
314
  if title_match:
311
315
  raw_title = strip_tags(title_match.group(1))
312
316
  title = re.split(r"\s[-|–—]\s", raw_title)[0].strip()
@@ -360,7 +364,9 @@ def flatten_nav(nav_items) -> list[str]:
360
364
 
361
365
  def get_section_key(path: str) -> str:
362
366
  normalized = path.replace("\\", "/")
363
- if normalized == "index.html" or normalized.startswith(("features/", "release_notes/")):
367
+ if normalized == "index.html" or normalized.startswith(
368
+ ("features/", "release_notes/")
369
+ ):
364
370
  return "root"
365
371
  if normalized.startswith("learn/"):
366
372
  return "learn"
@@ -386,19 +392,22 @@ def build_url(base_url: str, rel_path: str) -> str:
386
392
  """Build a public URL for a rendered html file."""
387
393
  normalized = rel_path.replace("\\", "/").lstrip("/")
388
394
  if normalized == "index.html":
389
- return base_url
395
+ return f"{base_url}/index.md"
390
396
 
391
397
  if normalized.endswith("/index.html"):
392
- normalized = normalized[: -len("index.html")]
398
+ path_without_index = normalized[: -len("index.html")].rstrip("/")
399
+ return f"{base_url}/{path_without_index}.md"
393
400
 
394
- return urljoin(base_url + "/", normalized)
401
+ return f"{base_url}/{normalized.rsplit('.', 1)[0]}.md"
395
402
 
396
403
 
397
404
  def make_indent(level: int) -> str:
398
405
  return " " * max(level, 0)
399
406
 
400
407
 
401
- def add_index_entry(index_lines: list[str], title: str, url: str, level: int = 0) -> None:
408
+ def add_index_entry(
409
+ index_lines: list[str], title: str, url: str, level: int = 0
410
+ ) -> None:
402
411
  index_lines.append(f"{make_indent(level)}- [{title}]({url})")
403
412
 
404
413
 
@@ -406,20 +415,28 @@ def build_index_lines(page_entries: list[dict]) -> list[str]:
406
415
  """Build the hierarchical INDEX section."""
407
416
  index_lines = ["## INDEX"]
408
417
 
409
- home_entry = next((entry for entry in page_entries if entry["path"] == "index.html"), None)
418
+ home_entry = next(
419
+ (entry for entry in page_entries if entry["path"] == "index.html"), None
420
+ )
410
421
  features_entry = next(
411
422
  (entry for entry in page_entries if entry["path"] == "features/index.html"),
412
423
  None,
413
424
  )
414
425
  release_notes_entry = next(
415
- (entry for entry in page_entries if entry["path"] == "release_notes/index.html"),
426
+ (
427
+ entry
428
+ for entry in page_entries
429
+ if entry["path"] == "release_notes/index.html"
430
+ ),
416
431
  None,
417
432
  )
418
433
 
419
434
  if home_entry:
420
435
  add_index_entry(index_lines, home_entry["title"], home_entry["url"], level=0)
421
436
  if features_entry:
422
- add_index_entry(index_lines, features_entry["title"], features_entry["url"], level=0)
437
+ add_index_entry(
438
+ index_lines, features_entry["title"], features_entry["url"], level=0
439
+ )
423
440
 
424
441
  grouped_sections = {"learn": [], "reference": [], "examples": []}
425
442
  for entry in page_entries:
@@ -437,7 +454,12 @@ def build_index_lines(page_entries: list[dict]) -> list[str]:
437
454
  add_index_entry(index_lines, entry["title"], entry["url"], level=1)
438
455
 
439
456
  if release_notes_entry:
440
- add_index_entry(index_lines, release_notes_entry["title"], release_notes_entry["url"], level=0)
457
+ add_index_entry(
458
+ index_lines,
459
+ release_notes_entry["title"],
460
+ release_notes_entry["url"],
461
+ level=0,
462
+ )
441
463
 
442
464
  return index_lines
443
465
 
@@ -463,7 +485,9 @@ def on_post_build(config):
463
485
  if should_include_page(rel_path):
464
486
  discovered_paths.append(rel_path)
465
487
 
466
- sorted_paths = sorted(set(discovered_paths), key=lambda path: path_sort_key(path, nav_positions))
488
+ sorted_paths = sorted(
489
+ set(discovered_paths), key=lambda path: path_sort_key(path, nav_positions)
490
+ )
467
491
 
468
492
  page_entries = []
469
493
  for rel_path in sorted_paths:
@@ -481,6 +505,18 @@ def on_post_build(config):
481
505
  title = get_page_title(html, rel_path)
482
506
  url = build_url(base_url, rel_path)
483
507
 
508
+ if rel_path == "index.html":
509
+ md_filename = "index.md"
510
+ elif rel_path.endswith("/index.html"):
511
+ md_filename = rel_path.replace("/index.html", ".md")
512
+ else:
513
+ md_filename = rel_path.rsplit(".", 1)[0] + ".md"
514
+ md_rel_path = os.path.join(site_dir, md_filename)
515
+ md_dir = os.path.dirname(md_rel_path)
516
+ os.makedirs(md_dir, exist_ok=True)
517
+ with open(md_rel_path, "w", encoding="utf-8") as md_file:
518
+ md_file.write(markdown.strip() + "\n")
519
+
484
520
  page_entries.append(
485
521
  {
486
522
  "path": rel_path,
@@ -133,6 +133,51 @@ await bot.download_file_by_id(
133
133
  )
134
134
  ```
135
135
 
136
+ ## Определение MIME-типа с помощью python-magic
137
+
138
+ MIME‑тип файла может определяться автоматически. В библиотеке поддерживаются два подхода:
139
+
140
+ * **По расширению файла** — работает без дополнительных зависимостей, но может быть неточным.
141
+ * **По содержимому файла (bytes)** — заметно точнее, но требует `python-magic`.
142
+
143
+ ### Как это работает
144
+
145
+ Пакет `python-magic` сам по себе MIME‑типы не определяет. Это Python‑обёртка над нативной (C‑шной) библиотекой **libmagic**, которая и выполняет распознавание типа файла по содержимому.
146
+
147
+ Именно поэтому `python-magic` может не работать «из коробки» на некоторых системах: Python‑пакет устанавливается через `pip`, но системная библиотека `libmagic` должна быть установлена отдельно.
148
+
149
+ Если `libmagic` отсутствует, импорт `magic` может завершиться ошибкой вида:
150
+
151
+ * `ImportError: failed to find libmagic. Check your installation`
152
+
153
+ ### Установка
154
+
155
+ Установите системные зависимости:
156
+
157
+ * **macOS (Homebrew):**
158
+
159
+ ```bash
160
+ brew install libmagic
161
+ ```
162
+
163
+ * **Linux (Debian/Ubuntu):**
164
+
165
+ ```bash
166
+ sudo apt install libmagic1
167
+ ```
168
+
169
+ * **Windows:**
170
+
171
+ ```bash
172
+ pip install python-magic-bin
173
+ ```
174
+
175
+ Также рекомендуем ознакомиться с репозиторием [https://github.com/ahupp/python-magic](https://github.com/ahupp/python-magic).
176
+
177
+ ### Примечания
178
+
179
+ * При наличии `python-magic` MIME‑тип определяется **по байтам файла**, что обычно точнее, чем определение по имени или расширению.
180
+
136
181
 
137
182
 
138
183
 
@@ -49,12 +49,11 @@ dependencies = [
49
49
  "aiohttp",
50
50
  "async-property",
51
51
  "typing_extensions>=4.15.0",
52
+ "python-magic>=0.4.27 ; sys_platform != 'win32'",
53
+ "python-magic-bin==0.4.14 ; sys_platform == 'win32'",
54
+ "filetype"
52
55
  ]
53
56
 
54
- [project.optional-dependencies]
55
- python-magic = ["python-magic>=0.4.27"]
56
-
57
-
58
57
  [tool.setuptools]
59
58
  packages = ["trueconf"]
60
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.1.10
3
+ Version: 1.2.0
4
4
  Summary: Lightweight and powerful framework for the TrueConf Server Chatbot API
5
5
  Author-email: TrueConf LLC <info@trueconf.com>, Anton Baadzhi <baadzhianton@gmail.com>
6
6
  License-Expression: BSD-3-Clause-Clear
@@ -31,8 +31,9 @@ Requires-Dist: magic-filter
31
31
  Requires-Dist: aiohttp
32
32
  Requires-Dist: async-property
33
33
  Requires-Dist: typing_extensions>=4.15.0
34
- Provides-Extra: python-magic
35
- Requires-Dist: python-magic>=0.4.27; extra == "python-magic"
34
+ Requires-Dist: python-magic>=0.4.27; sys_platform != "win32"
35
+ Requires-Dist: python-magic-bin==0.4.14; sys_platform == "win32"
36
+ Requires-Dist: filetype
36
37
  Dynamic: license-file
37
38
 
38
39
  <p align="center">
@@ -98,10 +98,13 @@ trueconf/methods/add_participant_to_chat.py
98
98
  trueconf/methods/auth.py
99
99
  trueconf/methods/base.py
100
100
  trueconf/methods/change_participant_role.py
101
+ trueconf/methods/clear_chat_history.py
101
102
  trueconf/methods/create_channel.py
102
103
  trueconf/methods/create_favorites_chat.py
103
104
  trueconf/methods/create_group_chat.py
104
105
  trueconf/methods/create_p2p_chat.py
106
+ trueconf/methods/edit_chat_avatar.py
107
+ trueconf/methods/edit_chat_title.py
105
108
  trueconf/methods/edit_message.py
106
109
  trueconf/methods/edit_survey.py
107
110
  trueconf/methods/forward_message.py
@@ -110,6 +113,7 @@ trueconf/methods/get_chat_history.py
110
113
  trueconf/methods/get_chat_participants.py
111
114
  trueconf/methods/get_chats.py
112
115
  trueconf/methods/get_file_info.py
116
+ trueconf/methods/get_file_upload_limits.py
113
117
  trueconf/methods/get_message_by_id.py
114
118
  trueconf/methods/get_user_display_name.py
115
119
  trueconf/methods/has_chat_participant.py
@@ -135,7 +139,9 @@ trueconf/types/content/attachment.py
135
139
  trueconf/types/content/base.py
136
140
  trueconf/types/content/chat_created.py
137
141
  trueconf/types/content/document.py
142
+ trueconf/types/content/edit_chat_title.py
138
143
  trueconf/types/content/forward_message.py
144
+ trueconf/types/content/location.py
139
145
  trueconf/types/content/photo.py
140
146
  trueconf/types/content/remove_participant.py
141
147
  trueconf/types/content/sticker.py
@@ -144,11 +150,15 @@ trueconf/types/content/text.py
144
150
  trueconf/types/content/video.py
145
151
  trueconf/types/requests/__init__.py
146
152
  trueconf/types/requests/added_chat_participant.py
153
+ trueconf/types/requests/changed_file_upload_limits.py
147
154
  trueconf/types/requests/changed_participant_role.py
155
+ trueconf/types/requests/cleared_chat_history.py
148
156
  trueconf/types/requests/created_channel.py
149
157
  trueconf/types/requests/created_favorites_chat.py
150
158
  trueconf/types/requests/created_group_chat.py
151
159
  trueconf/types/requests/created_personal_chat.py
160
+ trueconf/types/requests/edited_chat_avatar.py
161
+ trueconf/types/requests/edited_chat_title.py
152
162
  trueconf/types/requests/edited_message.py
153
163
  trueconf/types/requests/removed_chat.py
154
164
  trueconf/types/requests/removed_chat_participant.py
@@ -159,10 +169,13 @@ trueconf/types/responses/add_chat_participant_response.py
159
169
  trueconf/types/responses/api_error.py
160
170
  trueconf/types/responses/auth_response_payload.py
161
171
  trueconf/types/responses/change_participant_role_response.py
172
+ trueconf/types/responses/clear_chat_history_response.py
162
173
  trueconf/types/responses/create_channel_response.py
163
174
  trueconf/types/responses/create_favorites_chat_response.py
164
175
  trueconf/types/responses/create_group_chat_response.py
165
176
  trueconf/types/responses/create_p2p_chat_response.py
177
+ trueconf/types/responses/edit_chat_avatar_response.py
178
+ trueconf/types/responses/edit_chat_title_response.py
166
179
  trueconf/types/responses/edit_message_response.py
167
180
  trueconf/types/responses/edit_survey_response.py
168
181
  trueconf/types/responses/forward_message_response.py
@@ -171,6 +184,7 @@ trueconf/types/responses/get_chat_history_response.py
171
184
  trueconf/types/responses/get_chat_participants_response.py
172
185
  trueconf/types/responses/get_chats_response.py
173
186
  trueconf/types/responses/get_file_info_response.py
187
+ trueconf/types/responses/get_file_upload_limits_response.py
174
188
  trueconf/types/responses/get_message_by_id_response.py
175
189
  trueconf/types/responses/get_user_display_name_response.py
176
190
  trueconf/types/responses/has_chat_participant_response.py
@@ -185,4 +199,5 @@ trueconf/types/responses/unsubscribe_file_progress_response.py
185
199
  trueconf/types/responses/upload_file_response.py
186
200
  trueconf/utils/__init__.py
187
201
  trueconf/utils/generate_secret_for_survey.py
202
+ trueconf/utils/split_text.py
188
203
  trueconf/utils/token.py
@@ -6,6 +6,10 @@ magic-filter
6
6
  aiohttp
7
7
  async-property
8
8
  typing_extensions>=4.15.0
9
+ filetype
9
10
 
10
- [python-magic]
11
+ [:sys_platform != "win32"]
11
12
  python-magic>=0.4.27
13
+
14
+ [:sys_platform == "win32"]
15
+ python-magic-bin==0.4.14
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.1.10'
22
- __version_tuple__ = version_tuple = (1, 1, 10)
21
+ __version__ = version = '1.2.0'
22
+ __version_tuple__ = version_tuple = (1, 2, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g8ec975402'
24
+ __commit_id__ = commit_id = 'ge5cf988c1'