python-trueconf-bot 1.1.6__tar.gz → 1.1.7__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 (190) hide show
  1. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/PKG-INFO +1 -1
  2. python_trueconf_bot-1.1.7/examples/add_big_list_users_to_channel.py +48 -0
  3. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/python_trueconf_bot.egg-info/PKG-INFO +1 -1
  4. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/python_trueconf_bot.egg-info/SOURCES.txt +1 -0
  5. python_trueconf_bot-1.1.7/trueconf/_version.py +24 -0
  6. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/client/bot.py +51 -11
  7. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/send_file.py +4 -2
  8. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/message.py +122 -5
  9. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_chat_by_id_response.py +1 -1
  10. python_trueconf_bot-1.1.6/trueconf/_version.py +0 -34
  11. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/.github/workflows/docs.yml +0 -0
  12. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/.github/workflows/release-test.yml +0 -0
  13. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/.github/workflows/release.yml +0 -0
  14. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/.gitignore +0 -0
  15. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/LICENSE +0 -0
  16. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/README-PyPI.md +0 -0
  17. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/README-ru.md +0 -0
  18. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/README.md +0 -0
  19. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/assets/head_en.png +0 -0
  20. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/assets/head_ru.png +0 -0
  21. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/assets/logo.svg +0 -0
  22. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/examples/echo_bot.md +0 -0
  23. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/examples/multibot.md +0 -0
  24. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/features.md +0 -0
  25. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/img/head.png +0 -0
  26. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/img/router_scheme_en.svg +0 -0
  27. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/index.md +0 -0
  28. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/learn/enums.md +0 -0
  29. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/learn/files.md +0 -0
  30. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/learn/filters.md +0 -0
  31. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/learn/getting-started.md +0 -0
  32. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/learn/parse-messages.md +0 -0
  33. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/learn/types.md +0 -0
  34. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/Bot.md +0 -0
  35. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/Dispatcher.md +0 -0
  36. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/Enums.md +0 -0
  37. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/Responses.md +0 -0
  38. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/Router.md +0 -0
  39. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/Types.md +0 -0
  40. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/reference/index.md +0 -0
  41. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/en/release_notes.md +0 -0
  42. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/img/chatbot.svg +0 -0
  43. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/img/favicon.ico +0 -0
  44. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/img/logo.svg +0 -0
  45. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/overrides/main.html +0 -0
  46. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/examples/echo_bot.md +0 -0
  47. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/examples/multibot.md +0 -0
  48. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/features.md +0 -0
  49. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/img/head.png +0 -0
  50. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/img/router_scheme_ru.svg +0 -0
  51. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/index.md +0 -0
  52. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/learn/enums.md +0 -0
  53. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/learn/files.md +0 -0
  54. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/learn/filters.md +0 -0
  55. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/learn/getting-started.md +0 -0
  56. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/learn/parse-messages.md +0 -0
  57. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/learn/types.md +0 -0
  58. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/ru/release_notes.md +0 -0
  59. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/docs/stylesheets/extra.css +0 -0
  60. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/examples/README-ru.md +0 -0
  61. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/examples/README.md +0 -0
  62. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/examples/filters.py +0 -0
  63. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/examples/report_bot.py +0 -0
  64. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/examples/update_token.py +0 -0
  65. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/examples/webhook.py +0 -0
  66. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/mkdocs.yml +0 -0
  67. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/pyproject.toml +0 -0
  68. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/python_trueconf_bot.egg-info/dependency_links.txt +0 -0
  69. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/python_trueconf_bot.egg-info/requires.txt +0 -0
  70. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/python_trueconf_bot.egg-info/top_level.txt +0 -0
  71. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/requirements-docs.txt +0 -0
  72. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/requirements.txt +0 -0
  73. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/setup.cfg +0 -0
  74. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/__init__.py +0 -0
  75. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/client/__init__.py +0 -0
  76. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/client/context_controller.py +0 -0
  77. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/client/session.py +0 -0
  78. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/dispatcher/__init__.py +0 -0
  79. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/dispatcher/dispatcher.py +0 -0
  80. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/dispatcher/router.py +0 -0
  81. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/__init__.py +0 -0
  82. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/aouth_error.py +0 -0
  83. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/chat_participant_role.py +0 -0
  84. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/chat_type.py +0 -0
  85. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/envelope_author_type.py +0 -0
  86. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/file_ready_state.py +0 -0
  87. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/incoming_update_method.py +0 -0
  88. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/message_type.py +0 -0
  89. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/parse_mode.py +0 -0
  90. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/survey_type.py +0 -0
  91. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/enums/update_type.py +0 -0
  92. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/exceptions.py +0 -0
  93. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/filters/__init__.py +0 -0
  94. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/filters/base.py +0 -0
  95. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/filters/command.py +0 -0
  96. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/filters/instance_of.py +0 -0
  97. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/filters/message.py +0 -0
  98. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/filters/method.py +0 -0
  99. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/loggers.py +0 -0
  100. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/__init__.py +0 -0
  101. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/add_participant_to_chat.py +0 -0
  102. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/auth.py +0 -0
  103. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/base.py +0 -0
  104. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/change_participant_role.py +0 -0
  105. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/create_channel.py +0 -0
  106. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/create_favorites_chat.py +0 -0
  107. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/create_group_chat.py +0 -0
  108. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/create_p2p_chat.py +0 -0
  109. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/edit_message.py +0 -0
  110. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/edit_survey.py +0 -0
  111. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/forward_message.py +0 -0
  112. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_chat_by_id.py +0 -0
  113. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_chat_history.py +0 -0
  114. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_chat_participants.py +0 -0
  115. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_chats.py +0 -0
  116. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_file_info.py +0 -0
  117. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_message_by_id.py +0 -0
  118. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/get_user_display_name.py +0 -0
  119. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/has_chat_participant.py +0 -0
  120. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/remove_chat.py +0 -0
  121. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/remove_message.py +0 -0
  122. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/remove_participant_from_chat.py +0 -0
  123. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/send_message.py +0 -0
  124. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/send_survey.py +0 -0
  125. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/subscribe_file_progress.py +0 -0
  126. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/unsubscribe_file_progress.py +0 -0
  127. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/methods/upload_file.py +0 -0
  128. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/py.typed +0 -0
  129. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/__init__.py +0 -0
  130. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/author_box.py +0 -0
  131. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/chat_participant.py +0 -0
  132. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/__init__.py +0 -0
  133. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/attachment.py +0 -0
  134. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/base.py +0 -0
  135. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/chat_created.py +0 -0
  136. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/document.py +0 -0
  137. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/forward_message.py +0 -0
  138. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/photo.py +0 -0
  139. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/remove_participant.py +0 -0
  140. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/sticker.py +0 -0
  141. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/survey.py +0 -0
  142. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/text.py +0 -0
  143. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/content/video.py +0 -0
  144. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/input_file.py +0 -0
  145. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/last_message.py +0 -0
  146. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/parser.py +0 -0
  147. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/__init__.py +0 -0
  148. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/added_chat_participant.py +0 -0
  149. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/changed_participant_role.py +0 -0
  150. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/created_channel.py +0 -0
  151. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/created_favorites_chat.py +0 -0
  152. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/created_group_chat.py +0 -0
  153. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/created_personal_chat.py +0 -0
  154. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/edited_message.py +0 -0
  155. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/removed_chat.py +0 -0
  156. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/removed_chat_participant.py +0 -0
  157. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/removed_message.py +0 -0
  158. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/requests/uploading_progress.py +0 -0
  159. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/__init__.py +0 -0
  160. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/add_chat_participant_response.py +0 -0
  161. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/api_error.py +0 -0
  162. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/auth_response_payload.py +0 -0
  163. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/change_participant_role_response.py +0 -0
  164. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/create_channel_response.py +0 -0
  165. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/create_favorites_chat_response.py +0 -0
  166. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/create_group_chat_response.py +0 -0
  167. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/create_p2p_chat_response.py +0 -0
  168. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/edit_message_response.py +0 -0
  169. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/edit_survey_response.py +0 -0
  170. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/forward_message_response.py +0 -0
  171. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_chat_history_response.py +0 -0
  172. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_chat_participants_response.py +0 -0
  173. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_chats_response.py +0 -0
  174. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_file_info_response.py +0 -0
  175. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_message_by_id_response.py +0 -0
  176. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/get_user_display_name_response.py +0 -0
  177. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/has_chat_participant_response.py +0 -0
  178. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/remove_chat_participant_response.py +0 -0
  179. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/remove_chat_response.py +0 -0
  180. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/remove_message_response.py +0 -0
  181. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/send_file_response.py +0 -0
  182. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/send_message_response.py +0 -0
  183. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/send_survey_response.py +0 -0
  184. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/subscribe_file_progress_response.py +0 -0
  185. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/unsubscribe_file_progress_response.py +0 -0
  186. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/responses/upload_file_response.py +0 -0
  187. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/types/update.py +0 -0
  188. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/utils/__init__.py +0 -0
  189. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/utils/generate_secret_for_survey.py +0 -0
  190. {python_trueconf_bot-1.1.6 → python_trueconf_bot-1.1.7}/trueconf/utils/token.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.1.6
3
+ Version: 1.1.7
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
@@ -0,0 +1,48 @@
1
+ from trueconf import Bot
2
+ from trueconf.exceptions import ApiErrorException
3
+ import asyncio
4
+ import logging
5
+ from pathlib import Path
6
+
7
+ SERVER_ADDR = ""
8
+ BOT_USERNAME = ""
9
+ BOT_PASSWORD = ""
10
+ PATH_LIST_USERS = ""
11
+ CHANNEL_NAME = ""
12
+
13
+ bot = Bot.from_credentials(
14
+ server=SERVER_ADDR,
15
+ username=BOT_USERNAME,
16
+ password=BOT_PASSWORD,
17
+ verify_ssl=False,
18
+ )
19
+
20
+ Path("logs").mkdir(parents=True, exist_ok=True)
21
+
22
+ logging.basicConfig(
23
+ level=logging.DEBUG,
24
+ format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
25
+ filename="logs/bot.log",
26
+ encoding="utf-8",
27
+ )
28
+
29
+ async def main():
30
+ await bot.start()
31
+ await bot.connected_event.wait()
32
+ await bot.authorized_event.wait()
33
+
34
+ resp = await bot.create_channel(title=CHANNEL_NAME)
35
+ with open(PATH_LIST_USERS, "r") as file:
36
+ for line in file:
37
+ user_id = line.strip()
38
+ if user_id:
39
+ try:
40
+ await bot.add_participant_to_chat(resp.chat_id, user_id=user_id, display_history=True)
41
+ except ApiErrorException as e:
42
+ if e.code == 309:
43
+ continue
44
+
45
+ await bot.shutdown()
46
+
47
+ if __name__ == "__main__":
48
+ asyncio.run(main())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-trueconf-bot
3
- Version: 1.1.6
3
+ Version: 1.1.7
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
@@ -53,6 +53,7 @@ docs/ru/learn/types.md
53
53
  docs/stylesheets/extra.css
54
54
  examples/README-ru.md
55
55
  examples/README.md
56
+ examples/add_big_list_users_to_channel.py
56
57
  examples/filters.py
57
58
  examples/report_bot.py
58
59
  examples/update_token.py
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '1.1.7'
22
+ __version_tuple__ = version_tuple = (1, 1, 7)
23
+
24
+ __commit_id__ = commit_id = 'ga3eb6d111'
@@ -7,6 +7,7 @@ import signal
7
7
  import ssl
8
8
  import tempfile
9
9
  import websockets
10
+ import warnings
10
11
  from pathlib import Path
11
12
  from aiohttp import ClientSession, ClientTimeout, TCPConnector, FormData
12
13
  from async_property import async_cached_property
@@ -337,7 +338,7 @@ class Bot:
337
338
  preview: InputFile | None = None,
338
339
  is_sticker: bool = False,
339
340
  timeout: int = 60,
340
- ) -> str | None:
341
+ ) -> str:
341
342
  """
342
343
  Uploads a file to the server and returns a temporary file identifier (temporalFileId).
343
344
 
@@ -390,7 +391,7 @@ class Bot:
390
391
 
391
392
  try:
392
393
  async with ClientSession(connector=connector, timeout=timeout) as session:
393
- data = FormData()
394
+ data = FormData(quote_fields=False)
394
395
  data.add_field(
395
396
  name="file",
396
397
  value= await file.read(),
@@ -1103,6 +1104,12 @@ class Bot:
1103
1104
  SendMessageResponse: Object containing the result of the message delivery.
1104
1105
  """
1105
1106
 
1107
+ warnings.warn(
1108
+ "reply_message is deprecated, use send_message(..., reply_message_id=...) instead",
1109
+ DeprecationWarning,
1110
+ stacklevel=2
1111
+ )
1112
+
1106
1113
  call = SendMessage(
1107
1114
  chat_id=chat_id,
1108
1115
  reply_message_id=message_id,
@@ -1147,6 +1154,7 @@ class Bot:
1147
1154
  file: InputFile,
1148
1155
  caption: str | None = None,
1149
1156
  parse_mode: ParseMode | str = ParseMode.TEXT,
1157
+ reply_message_id: str | None = None
1150
1158
  ) -> SendFileResponse:
1151
1159
  """
1152
1160
  Sends a document or any arbitrary file to the specified chat.
@@ -1163,6 +1171,7 @@ class Bot:
1163
1171
  file (InputFile): The file to be uploaded. Must be a subclass of `InputFile`.
1164
1172
  caption (str | None): Optional caption text to be sent with the file.
1165
1173
  parse_mode (ParseMode | str): Text formatting mode (e.g., Markdown, HTML, or plain text).
1174
+ reply_message_id (str, optional): Optional identifier of the message to which this message is a reply.
1166
1175
 
1167
1176
  Returns:
1168
1177
  SendFileResponse: An object containing the result of the file upload.
@@ -1184,14 +1193,21 @@ class Bot:
1184
1193
  file=file,
1185
1194
  )
1186
1195
 
1187
- call = SendFile(chat_id=chat_id, temporal_file_id=temporal_file_id, text=caption, parse_mode=parse_mode)
1196
+ call = SendFile(
1197
+ chat_id=chat_id,
1198
+ temporal_file_id=temporal_file_id,
1199
+ text=caption,
1200
+ parse_mode=parse_mode,
1201
+ reply_message_id=reply_message_id
1202
+ )
1188
1203
  return await self(call)
1189
1204
 
1190
1205
  async def send_message(
1191
1206
  self,
1192
1207
  chat_id: str,
1193
1208
  text: str,
1194
- parse_mode: ParseMode | str = ParseMode.TEXT
1209
+ parse_mode: ParseMode | str = ParseMode.TEXT,
1210
+ reply_message_id: str | None = None
1195
1211
  ) -> SendMessageResponse:
1196
1212
  """
1197
1213
  Sends a message to the specified chat.
@@ -1204,13 +1220,19 @@ class Bot:
1204
1220
  text (str): Text content of the message.
1205
1221
  parse_mode (ParseMode | str, optional): Text formatting mode.
1206
1222
  Defaults to plain text.
1223
+ reply_message_id (str, optional): Optional identifier of the message to which this message is a reply.
1207
1224
 
1208
1225
  Returns:
1209
1226
  SendMessageResponse: Object containing the result of the message delivery.
1210
1227
  """
1211
1228
 
1212
1229
  loggers.chatbot.info(f"✉️ Sending message to {chat_id}")
1213
- call = SendMessage(chat_id=chat_id, text=text, parse_mode=parse_mode)
1230
+ call = SendMessage(
1231
+ chat_id=chat_id,
1232
+ text=text,
1233
+ parse_mode=parse_mode,
1234
+ reply_message_id=reply_message_id
1235
+ )
1214
1236
  return await self(call)
1215
1237
 
1216
1238
  async def send_photo(
@@ -1219,7 +1241,8 @@ class Bot:
1219
1241
  file: InputFile,
1220
1242
  preview: InputFile | None,
1221
1243
  caption: str | None = None,
1222
- parse_mode: ParseMode | str = ParseMode.TEXT
1244
+ parse_mode: ParseMode | str = ParseMode.TEXT,
1245
+ reply_message_id: str | None = None
1223
1246
  ) -> SendFileResponse:
1224
1247
  """
1225
1248
  Sends a photo to the specified chat, with optional caption and preview support.
@@ -1242,6 +1265,7 @@ class Bot:
1242
1265
  preview (InputFile | None): Optional preview image. Must also be an `InputFile` if provided.
1243
1266
  caption (str | None): Optional caption to be sent along with the image.
1244
1267
  parse_mode (ParseMode | str): Formatting mode for the caption (e.g., Markdown, HTML, plain text).
1268
+ reply_message_id (str, optional): Optional identifier of the message to which this message is a reply.
1245
1269
 
1246
1270
  Returns:
1247
1271
  SendFileResponse: An object containing the result of the file upload.
@@ -1265,10 +1289,21 @@ class Bot:
1265
1289
  preview=preview,
1266
1290
  )
1267
1291
 
1268
- call = SendFile(chat_id=chat_id, temporal_file_id=temporal_file_id, text=caption, parse_mode=parse_mode)
1292
+ call = SendFile(
1293
+ chat_id=chat_id,
1294
+ temporal_file_id=temporal_file_id,
1295
+ text=caption,
1296
+ parse_mode=parse_mode,
1297
+ reply_message_id=reply_message_id
1298
+ )
1269
1299
  return await self(call)
1270
1300
 
1271
- async def send_sticker(self, chat_id: str, file: InputFile) -> SendFileResponse:
1301
+ async def send_sticker(
1302
+ self,
1303
+ chat_id: str,
1304
+ file: InputFile,
1305
+ reply_message_id: str | None = None
1306
+ ) -> SendFileResponse:
1272
1307
  """
1273
1308
  Sends a sticker in WebP format to the specified chat.
1274
1309
 
@@ -1285,6 +1320,7 @@ class Bot:
1285
1320
  Args:
1286
1321
  chat_id (str): Identifier of the chat to which the sticker will be sent.
1287
1322
  file (InputFile): The sticker file in WebP format. Must be a subclass of `InputFile`.
1323
+ reply_message_id (str, optional): Optional identifier of the message to which this message is a reply.
1288
1324
 
1289
1325
  Returns:
1290
1326
  SendFileResponse: An object containing the result of the file upload.
@@ -1309,7 +1345,11 @@ class Bot:
1309
1345
  is_sticker=True
1310
1346
  )
1311
1347
 
1312
- call = SendFile(chat_id=chat_id, temporal_file_id=temporal_file_id)
1348
+ call = SendFile(
1349
+ chat_id=chat_id,
1350
+ temporal_file_id=temporal_file_id,
1351
+ reply_message_id=reply_message_id
1352
+ )
1313
1353
  return await self(call)
1314
1354
 
1315
1355
  async def send_survey(
@@ -1317,7 +1357,7 @@ class Bot:
1317
1357
  chat_id: str,
1318
1358
  title: str,
1319
1359
  survey_campaign_id: str,
1320
- reply_message_id: str = None,
1360
+ reply_message_id: str | None = None,
1321
1361
  survey_type: SurveyType = SurveyType.NON_ANONYMOUS,
1322
1362
  ) -> SendSurveyResponse:
1323
1363
  """
@@ -1330,7 +1370,7 @@ class Bot:
1330
1370
  chat_id (str): Identifier of the chat to send the survey to.
1331
1371
  title (str): Title of the survey displayed in the chat.
1332
1372
  survey_campaign_id (str): Identifier of the survey campaign.
1333
- reply_message_id (str, optional): Identifier of the message being replied to.
1373
+ reply_message_id (str, optional): Optional identifier of the message to which this message is a reply.
1334
1374
  survey_type (SurveyType, optional): Type of the survey (anonymous or non-anonymous). Defaults to non-anonymous.
1335
1375
 
1336
1376
  Returns:
@@ -12,8 +12,9 @@ class SendFile(TrueConfMethod[SendFileResponse]):
12
12
 
13
13
  chat_id: str
14
14
  temporal_file_id: str
15
- text: str = None
16
- parse_mode: str = None
15
+ text: str | None = None
16
+ parse_mode: str | None = None
17
+ reply_message_id: str | None = None
17
18
 
18
19
  def __post_init__(self):
19
20
  super().__init__()
@@ -21,6 +22,7 @@ class SendFile(TrueConfMethod[SendFileResponse]):
21
22
  def payload(self):
22
23
  return {
23
24
  "chatId": self.chat_id,
25
+ "replyMessageId": self.reply_message_id,
24
26
  "content": {
25
27
  "temporalFileId": self.temporal_file_id,
26
28
  "caption":{
@@ -333,11 +333,12 @@ class Message(BoundToBot, DataClassDictMixin):
333
333
 
334
334
  async def reply(self, text: str, parse_mode: ParseMode | str = ParseMode.HTML) -> object:
335
335
  """
336
- Shortcut for the [`reply_message`][trueconf.Bot.reply_message] method of the bot instance. Use this method to send a reply message to the current chat.
336
+ Shortcut for the [`send_message`][trueconf.Bot.send_message] method.
337
+ Sends a reply to this message in the current chat.
337
338
 
338
339
  Automatically fills the following attributes:
339
- - `chat_id`
340
- - `reply_message_id`
340
+ - `chat_id`: Current chat identifier.
341
+ - `reply_message_id`: ID of the current message.
341
342
 
342
343
  Source: https://trueconf.com/docs/chatbot-connector/en/messages/#replyMessage
343
344
 
@@ -349,13 +350,129 @@ class Message(BoundToBot, DataClassDictMixin):
349
350
  SendMessageResponse: Object containing the result of the message delivery.
350
351
  """
351
352
 
352
- return await self.bot.reply_message(
353
+ return await self.bot.send_message(
353
354
  chat_id=self.chat_id,
354
- message_id=self.message_id,
355
+ reply_message_id=self.message_id,
355
356
  text=text,
356
357
  parse_mode=parse_mode,
357
358
  )
358
359
 
360
+ async def reply_photo(
361
+ self,
362
+ file: InputFile,
363
+ preview: InputFile | None,
364
+ caption: str | None = None,
365
+ parse_mode: ParseMode | str = ParseMode.TEXT,
366
+
367
+ ) -> object:
368
+ """
369
+ Shortcut for the [`send_photo`][trueconf.Bot.send_photo] method of the bot instance.
370
+ Sends a photo as a reply to the current message in this chat.
371
+
372
+ Automatically fills the following attributes:
373
+ - `chat_id`: Current chat identifier.
374
+ - `reply_message_id`: ID of the current message.
375
+
376
+ Source:
377
+ https://trueconf.com/docs/chatbot-connector/en/files/#sending-an-image
378
+
379
+ Args:
380
+ file (InputFile): The photo file to upload. Must be a subclass of `InputFile`.
381
+ preview (InputFile | None): Optional preview image. Must also be an `InputFile` if provided.
382
+ caption (str | None): Optional caption to be sent along with the image.
383
+ parse_mode (ParseMode | str): Formatting mode for the caption (e.g., Markdown, HTML, plain text).
384
+ reply_message_id (str | None): Optional identifier of the message to which this message is a reply.
385
+
386
+ Returns:
387
+ SendFileResponse: Object containing the result of the photo upload.
388
+
389
+ Examples:
390
+ >>> @<router>.message()
391
+ >>> async def on_message(message:Message):
392
+ >>> await message.answer_photo(file=FSInputFile("sticker.webp"), preview=FSInputFile("sticker.webp"))
393
+ """
394
+
395
+ return await self.bot.send_photo(
396
+ chat_id=self.chat_id,
397
+ file=file,
398
+ caption=caption,
399
+ preview=preview,
400
+ parse_mode=parse_mode,
401
+ reply_message_id=self.message_id
402
+ )
403
+
404
+ async def reply_document(
405
+ self,
406
+ file: InputFile,
407
+ caption: str | None = None,
408
+ parse_mode: ParseMode | str = ParseMode.TEXT
409
+ ) -> object:
410
+ """
411
+ Shortcut for the [`send_document`][trueconf.Bot.send_document] method of the bot instance.
412
+ Sends a document as a reply to the current message in this chat.
413
+
414
+ Automatically fills the following attributes:
415
+ - `chat_id`: Current chat identifier.
416
+ - `reply_message_id`: ID of the current message.
417
+
418
+ Source:
419
+ https://trueconf.com/docs/chatbot-connector/en/files/#working-with-files
420
+
421
+ Args:
422
+ file (InputFile): The file to be uploaded. Must be a subclass of `InputFile`.
423
+ caption (str | None): Optional caption text to be sent with the file.
424
+ parse_mode (ParseMode | str): Text formatting mode (e.g., Markdown, HTML, or plain text).
425
+
426
+ Returns:
427
+ SendFileResponse: Object containing the result of the document upload.
428
+
429
+ Examples:
430
+ >>> @<router>.message()
431
+ >>> async def on_message(message:Message):
432
+ >>> await message.answer_document(file=FSInputFile("sticker.webp"))
433
+ """
434
+
435
+ return await self.bot.send_document(
436
+ chat_id=self.chat_id,
437
+ file=file,
438
+ caption=caption,
439
+ parse_mode=parse_mode,
440
+ reply_message_id=self.message_id
441
+ )
442
+
443
+ async def reply_sticker(
444
+ self,
445
+ file: InputFile
446
+ ) -> object:
447
+ """
448
+ Shortcut for the [`send_sticker`][trueconf.Bot.send_sticker] method of the bot instance.
449
+ Sends a sticker as a reply to the current message in this chat.
450
+
451
+ Automatically fills the following attributes:
452
+ - `chat_id`: Current chat identifier.
453
+ - `reply_message_id`: ID of the current message.
454
+
455
+ Source:
456
+ https://trueconf.com/docs/chatbot-connector/en/files/#upload-file-to-server-storage
457
+
458
+ Args:
459
+ file (InputFile): The sticker file in WebP format. Must be a subclass of `InputFile`.
460
+
461
+ Returns:
462
+ SendFileResponse: Object containing the result of the sticker delivery.
463
+
464
+ Examples:
465
+ >>> @<router>.message()
466
+ >>> async def on_message(message:Message):
467
+ >>> await message.answer_sticker(file=FSInputFile("sticker.webp"))
468
+ """
469
+
470
+ return await self.bot.send_sticker(
471
+ chat_id=self.chat_id,
472
+ file=file,
473
+ reply_message_id=self.message_id
474
+ )
475
+
359
476
  async def forward(self, chat_id: str) -> object:
360
477
  """
361
478
  Shortcut for the [`forward_message`][trueconf.Bot.forward_message] method of the bot instance. Use this method to forward the current message to another chat.
@@ -10,4 +10,4 @@ class GetChatByIdResponse(DataClassDictMixin):
10
10
  title: str
11
11
  chat_type: int = field(metadata={"alias": "chatType"})
12
12
  unread_messages: int = field(metadata={"alias": "unreadMessages"})
13
- last_message: LastMessage = field(metadata={"alias": "lastMessage"})
13
+ last_message: LastMessage | None = field(default=None, metadata={"alias": "lastMessage"})
@@ -1,34 +0,0 @@
1
- # file generated by setuptools-scm
2
- # don't change, don't track in version control
3
-
4
- __all__ = [
5
- "__version__",
6
- "__version_tuple__",
7
- "version",
8
- "version_tuple",
9
- "__commit_id__",
10
- "commit_id",
11
- ]
12
-
13
- TYPE_CHECKING = False
14
- if TYPE_CHECKING:
15
- from typing import Tuple
16
- from typing import Union
17
-
18
- VERSION_TUPLE = Tuple[Union[int, str], ...]
19
- COMMIT_ID = Union[str, None]
20
- else:
21
- VERSION_TUPLE = object
22
- COMMIT_ID = object
23
-
24
- version: str
25
- __version__: str
26
- __version_tuple__: VERSION_TUPLE
27
- version_tuple: VERSION_TUPLE
28
- commit_id: COMMIT_ID
29
- __commit_id__: COMMIT_ID
30
-
31
- __version__ = version = '1.1.6'
32
- __version_tuple__ = version_tuple = (1, 1, 6)
33
-
34
- __commit_id__ = commit_id = 'g97554760a'