spluspy 2.1.2__tar.gz → 2.1.4__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 (307) hide show
  1. {spluspy-2.1.2 → spluspy-2.1.4}/CHANGELOG.md +11 -0
  2. {spluspy-2.1.2 → spluspy-2.1.4}/PKG-INFO +1 -1
  3. {spluspy-2.1.2 → spluspy-2.1.4}/pyproject.toml +1 -1
  4. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/__version__.py +1 -1
  5. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/version.py +1 -1
  6. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/admin.py +44 -0
  7. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/client/client.py +72 -16
  8. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/message.py +83 -6
  9. {spluspy-2.1.2 → spluspy-2.1.4}/.gitignore +0 -0
  10. {spluspy-2.1.2 → spluspy-2.1.4}/CONTRIBUTING.md +0 -0
  11. {spluspy-2.1.2 → spluspy-2.1.4}/Dockerfile +0 -0
  12. {spluspy-2.1.2 → spluspy-2.1.4}/LICENSE +0 -0
  13. {spluspy-2.1.2 → spluspy-2.1.4}/MANIFEST.in +0 -0
  14. {spluspy-2.1.2 → spluspy-2.1.4}/README.md +0 -0
  15. {spluspy-2.1.2 → spluspy-2.1.4}/README.rst +0 -0
  16. {spluspy-2.1.2 → spluspy-2.1.4}/examples/01_hello_bot.py +0 -0
  17. {spluspy-2.1.2 → spluspy-2.1.4}/examples/02_echo_bot.py +0 -0
  18. {spluspy-2.1.2 → spluspy-2.1.4}/examples/03_command_bot.py +0 -0
  19. {spluspy-2.1.2 → spluspy-2.1.4}/examples/04_private_only.py +0 -0
  20. {spluspy-2.1.2 → spluspy-2.1.4}/examples/05_group_only.py +0 -0
  21. {spluspy-2.1.2 → spluspy-2.1.4}/examples/06_regex_bot.py +0 -0
  22. {spluspy-2.1.2 → spluspy-2.1.4}/examples/07_user_filter.py +0 -0
  23. {spluspy-2.1.2 → spluspy-2.1.4}/examples/08_combined_filters.py +0 -0
  24. {spluspy-2.1.2 → spluspy-2.1.4}/examples/09_inline_keyboard.py +0 -0
  25. {spluspy-2.1.2 → spluspy-2.1.4}/examples/10_reply_keyboard.py +0 -0
  26. {spluspy-2.1.2 → spluspy-2.1.4}/examples/11_message_actions.py +0 -0
  27. {spluspy-2.1.2 → spluspy-2.1.4}/examples/12_media_bot.py +0 -0
  28. {spluspy-2.1.2 → spluspy-2.1.4}/examples/13_fsm_bot.py +0 -0
  29. {spluspy-2.1.2 → spluspy-2.1.4}/examples/14_plugin_bot.py +0 -0
  30. {spluspy-2.1.2 → spluspy-2.1.4}/examples/15_middleware_bot.py +0 -0
  31. {spluspy-2.1.2 → spluspy-2.1.4}/examples/16_scheduler_bot.py +0 -0
  32. {spluspy-2.1.2 → spluspy-2.1.4}/examples/17_conversation.py +0 -0
  33. {spluspy-2.1.2 → spluspy-2.1.4}/examples/18_chat_management.py +0 -0
  34. {spluspy-2.1.2 → spluspy-2.1.4}/examples/19_event_types.py +0 -0
  35. {spluspy-2.1.2 → spluspy-2.1.4}/examples/20_sync_bot.py +0 -0
  36. {spluspy-2.1.2 → spluspy-2.1.4}/examples/21_album_handler.py +0 -0
  37. {spluspy-2.1.2 → spluspy-2.1.4}/examples/22_download_bot.py +0 -0
  38. {spluspy-2.1.2 → spluspy-2.1.4}/examples/23_url_button.py +0 -0
  39. {spluspy-2.1.2 → spluspy-2.1.4}/examples/24_string_session.py +0 -0
  40. {spluspy-2.1.2 → spluspy-2.1.4}/examples/25_error_handling.py +0 -0
  41. {spluspy-2.1.2 → spluspy-2.1.4}/examples/25_working_bot.py +0 -0
  42. {spluspy-2.1.2 → spluspy-2.1.4}/examples/26_message_entities.py +0 -0
  43. {spluspy-2.1.2 → spluspy-2.1.4}/examples/27_search_messages.py +0 -0
  44. {spluspy-2.1.2 → spluspy-2.1.4}/examples/28_poll_bot.py +0 -0
  45. {spluspy-2.1.2 → spluspy-2.1.4}/examples/29_dice_bot.py +0 -0
  46. {spluspy-2.1.2 → spluspy-2.1.4}/examples/30_cache_bot.py +0 -0
  47. {spluspy-2.1.2 → spluspy-2.1.4}/examples/31_reaction_bot.py +0 -0
  48. {spluspy-2.1.2 → spluspy-2.1.4}/examples/32_mark_read_bot.py +0 -0
  49. {spluspy-2.1.2 → spluspy-2.1.4}/examples/33_context_manager.py +0 -0
  50. {spluspy-2.1.2 → spluspy-2.1.4}/examples/34_user_info.py +0 -0
  51. {spluspy-2.1.2 → spluspy-2.1.4}/examples/35_chat_info.py +0 -0
  52. {spluspy-2.1.2 → spluspy-2.1.4}/examples/36_forward_copy.py +0 -0
  53. {spluspy-2.1.2 → spluspy-2.1.4}/examples/37_admin_bot.py +0 -0
  54. {spluspy-2.1.2 → spluspy-2.1.4}/examples/38_media_filters.py +0 -0
  55. {spluspy-2.1.2 → spluspy-2.1.4}/examples/39_status_bot.py +0 -0
  56. {spluspy-2.1.2 → spluspy-2.1.4}/examples/40_delete_detection.py +0 -0
  57. {spluspy-2.1.2 → spluspy-2.1.4}/examples/41_read_detection.py +0 -0
  58. {spluspy-2.1.2 → spluspy-2.1.4}/examples/42_raw_events.py +0 -0
  59. {spluspy-2.1.2 → spluspy-2.1.4}/examples/43_poll_handler.py +0 -0
  60. {spluspy-2.1.2 → spluspy-2.1.4}/examples/44_reaction_handler.py +0 -0
  61. {spluspy-2.1.2 → spluspy-2.1.4}/examples/45_typing_handler.py +0 -0
  62. {spluspy-2.1.2 → spluspy-2.1.4}/examples/46_get_messages.py +0 -0
  63. {spluspy-2.1.2 → spluspy-2.1.4}/examples/47_iter_messages.py +0 -0
  64. {spluspy-2.1.2 → spluspy-2.1.4}/examples/48_get_members.py +0 -0
  65. {spluspy-2.1.2 → spluspy-2.1.4}/examples/49_resolve_username.py +0 -0
  66. {spluspy-2.1.2 → spluspy-2.1.4}/examples/50_invoke.py +0 -0
  67. {spluspy-2.1.2 → spluspy-2.1.4}/setup.py +0 -0
  68. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/__init__.py +0 -0
  69. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/__init__.py +0 -0
  70. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/_updates/__init__.py +0 -0
  71. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/_updates/entitycache.py +0 -0
  72. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/_updates/messagebox.py +0 -0
  73. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/_updates/session.py +0 -0
  74. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/__init__.py +0 -0
  75. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/account.py +0 -0
  76. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/auth.py +0 -0
  77. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/bots.py +0 -0
  78. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/buttons.py +0 -0
  79. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/chats.py +0 -0
  80. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/dialogs.py +0 -0
  81. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/downloads.py +0 -0
  82. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/messageparse.py +0 -0
  83. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/messages.py +0 -0
  84. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/soroushclient.py +0 -0
  85. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/telegrambaseclient.py +0 -0
  86. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/updates.py +0 -0
  87. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/uploads.py +0 -0
  88. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/client/users.py +0 -0
  89. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/__init__.py +0 -0
  90. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/aes.py +0 -0
  91. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/aesctr.py +0 -0
  92. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/authkey.py +0 -0
  93. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/cdndecrypter.py +0 -0
  94. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/factorization.py +0 -0
  95. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/fast_aes.pyx +0 -0
  96. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/fast_rsa.pyx +0 -0
  97. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/libssl.py +0 -0
  98. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/crypto/rsa.py +0 -0
  99. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/custom.py +0 -0
  100. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/errors/__init__.py +0 -0
  101. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/errors/common.py +0 -0
  102. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/errors/rpcbaseerrors.py +0 -0
  103. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/errors/rpcerrorlist.py +0 -0
  104. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/__init__.py +0 -0
  105. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/album.py +0 -0
  106. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/callbackquery.py +0 -0
  107. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/chataction.py +0 -0
  108. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/common.py +0 -0
  109. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/inlinequery.py +0 -0
  110. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/messagedeleted.py +0 -0
  111. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/messageedited.py +0 -0
  112. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/messageread.py +0 -0
  113. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/newmessage.py +0 -0
  114. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/raw.py +0 -0
  115. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/events/userupdate.py +0 -0
  116. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/extensions/__init__.py +0 -0
  117. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/extensions/binaryreader.py +0 -0
  118. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/extensions/html.py +0 -0
  119. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/extensions/markdown.py +0 -0
  120. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/extensions/messagepacker.py +0 -0
  121. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/functions.py +0 -0
  122. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/helpers.py +0 -0
  123. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/hints.py +0 -0
  124. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/__init__.py +0 -0
  125. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/authenticator.py +0 -0
  126. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/__init__.py +0 -0
  127. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/connection.py +0 -0
  128. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/http.py +0 -0
  129. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/tcpabridged.py +0 -0
  130. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/tcpfull.py +0 -0
  131. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/tcpintermediate.py +0 -0
  132. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/tcpmtproxy.py +0 -0
  133. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/tcpobfuscated.py +0 -0
  134. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/connection/websocket.py +0 -0
  135. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/mtprotoplainsender.py +0 -0
  136. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/mtprotosender.py +0 -0
  137. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/mtprotostate.py +0 -0
  138. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/network/requeststate.py +0 -0
  139. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/password.py +0 -0
  140. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/requestiter.py +0 -0
  141. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/sessions/__init__.py +0 -0
  142. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/sessions/abstract.py +0 -0
  143. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/sessions/memory.py +0 -0
  144. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/sessions/sqlite.py +0 -0
  145. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/sessions/string.py +0 -0
  146. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/sync.py +0 -0
  147. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/__init__.py +0 -0
  148. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/alltlobjects.py +0 -0
  149. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/core/__init__.py +0 -0
  150. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/core/gzippacked.py +0 -0
  151. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/core/messagecontainer.py +0 -0
  152. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/core/rpcresult.py +0 -0
  153. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/core/tlmessage.py +0 -0
  154. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/__init__.py +0 -0
  155. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/adminlogevent.py +0 -0
  156. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/button.py +0 -0
  157. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/chatgetter.py +0 -0
  158. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/conversation.py +0 -0
  159. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/dialog.py +0 -0
  160. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/draft.py +0 -0
  161. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/file.py +0 -0
  162. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/forward.py +0 -0
  163. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/inlinebuilder.py +0 -0
  164. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/inlineresult.py +0 -0
  165. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/inlineresults.py +0 -0
  166. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/inputsizedfile.py +0 -0
  167. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/message.py +0 -0
  168. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/messagebutton.py +0 -0
  169. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/participantpermissions.py +0 -0
  170. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/qrlogin.py +0 -0
  171. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/sendergetter.py +0 -0
  172. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/custom/types.py +0 -0
  173. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/__init__.py +0 -0
  174. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/account.py +0 -0
  175. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/auth.py +0 -0
  176. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/bots.py +0 -0
  177. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/channels.py +0 -0
  178. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/chatlists.py +0 -0
  179. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/conference.py +0 -0
  180. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/contacts.py +0 -0
  181. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/folders.py +0 -0
  182. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/help.py +0 -0
  183. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/langpack.py +0 -0
  184. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/messages.py +0 -0
  185. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/payments.py +0 -0
  186. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/phone.py +0 -0
  187. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/photos.py +0 -0
  188. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/premium.py +0 -0
  189. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/stats.py +0 -0
  190. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/stories.py +0 -0
  191. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/thirdParty.py +0 -0
  192. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/updates.py +0 -0
  193. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/upload.py +0 -0
  194. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/functions/users.py +0 -0
  195. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/patched/__init__.py +0 -0
  196. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/tlobject.py +0 -0
  197. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/__init__.py +0 -0
  198. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/account.py +0 -0
  199. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/auth.py +0 -0
  200. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/bots.py +0 -0
  201. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/channels.py +0 -0
  202. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/chatlists.py +0 -0
  203. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/conference.py +0 -0
  204. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/contacts.py +0 -0
  205. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/help.py +0 -0
  206. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/messages.py +0 -0
  207. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/payments.py +0 -0
  208. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/phone.py +0 -0
  209. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/photos.py +0 -0
  210. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/premium.py +0 -0
  211. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/stats.py +0 -0
  212. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/stickers.py +0 -0
  213. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/storage.py +0 -0
  214. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/stories.py +0 -0
  215. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/thirdParty.py +0 -0
  216. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/update.py +0 -0
  217. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/updates.py +0 -0
  218. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/upload.py +0 -0
  219. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/tl/types/users.py +0 -0
  220. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/types.py +0 -0
  221. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/_engine/utils.py +0 -0
  222. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/afk.py +0 -0
  223. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/cli.py +0 -0
  224. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/client/__init__.py +0 -0
  225. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/client/chat_mixin.py +0 -0
  226. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/client/conversation.py +0 -0
  227. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/client/media_mixin.py +0 -0
  228. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/compat.py +0 -0
  229. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/config.py +0 -0
  230. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/errors/__init__.py +0 -0
  231. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/errors/exceptions.py +0 -0
  232. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/__init__.py +0 -0
  233. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/album.py +0 -0
  234. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/base.py +0 -0
  235. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/callback.py +0 -0
  236. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/chat_action.py +0 -0
  237. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/edited.py +0 -0
  238. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/inline.py +0 -0
  239. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/message.py +0 -0
  240. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/message_deleted.py +0 -0
  241. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/message_read.py +0 -0
  242. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/events/user_update.py +0 -0
  243. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/filters/__init__.py +0 -0
  244. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/filters/filters.py +0 -0
  245. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/fsm/__init__.py +0 -0
  246. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/fsm/state.py +0 -0
  247. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/middleware/__init__.py +0 -0
  248. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/middleware/base.py +0 -0
  249. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/middleware/rate_limit.py +0 -0
  250. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/mirror.py +0 -0
  251. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/__init__.py +0 -0
  252. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/bot.py +0 -0
  253. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/chat.py +0 -0
  254. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/enums.py +0 -0
  255. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/media.py +0 -0
  256. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/objects.py +0 -0
  257. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/models/user.py +0 -0
  258. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/__init__.py +0 -0
  259. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/client.py +0 -0
  260. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/connection.py +0 -0
  261. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/http_client.py +0 -0
  262. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/mtproto.py +0 -0
  263. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/protocols.py +0 -0
  264. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/spluspy_adapter.py +0 -0
  265. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/network/transport.py +0 -0
  266. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/plugins/__init__.py +0 -0
  267. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/plugins/loader.py +0 -0
  268. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/py.typed +0 -0
  269. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/scheduler/__init__.py +0 -0
  270. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/scheduler/scheduler.py +0 -0
  271. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/session/__init__.py +0 -0
  272. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/session/base.py +0 -0
  273. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/session/memory.py +0 -0
  274. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/session/sqlite.py +0 -0
  275. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/session/string.py +0 -0
  276. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/__init__.py +0 -0
  277. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/base.py +0 -0
  278. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/entity_cache.py +0 -0
  279. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/memory.py +0 -0
  280. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/postgres.py +0 -0
  281. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/redis.py +0 -0
  282. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/storage/sqlite.py +0 -0
  283. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/sync/__init__.py +0 -0
  284. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/sync/client.py +0 -0
  285. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/__init__.py +0 -0
  286. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/batch.py +0 -0
  287. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/cache.py +0 -0
  288. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/chat_lock.py +0 -0
  289. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/file_transfer.py +0 -0
  290. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/helpers.py +0 -0
  291. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/logger.py +0 -0
  292. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/rate_limiter.py +0 -0
  293. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/resolver.py +0 -0
  294. {spluspy-2.1.2 → spluspy-2.1.4}/spluspy/utils/version_check.py +0 -0
  295. {spluspy-2.1.2 → spluspy-2.1.4}/tests/__init__.py +0 -0
  296. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_client.py +0 -0
  297. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_filters.py +0 -0
  298. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_fsm.py +0 -0
  299. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_fsm_enhanced.py +0 -0
  300. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_middleware.py +0 -0
  301. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_rate_limiter.py +0 -0
  302. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_resolver.py +0 -0
  303. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_scheduler.py +0 -0
  304. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_session.py +0 -0
  305. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_storage.py +0 -0
  306. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_types.py +0 -0
  307. {spluspy-2.1.2 → spluspy-2.1.4}/tests/test_utils.py +0 -0
@@ -5,6 +5,17 @@ All notable changes to SplusPy will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/).
7
7
 
8
+ ## [2.1.3] - 2026-07-13
9
+
10
+ ### Fixed
11
+ - Fixed loop error in Bots: scheduler tasks now run on the correct event loop
12
+ - Fixed `wait_until_ready()` method not existing error
13
+ - Fixed `pin_chat_message` method name to `pin_message`
14
+
15
+ ### Added
16
+ - `get_reply_message()` method to `Message` class for fetching replied-to messages
17
+ - Pin/unpin commands for managers, owners, and creator (`پین`, `انپین`, `انپین همه`)
18
+
8
19
  ## [2.1.1] - 2026-07-12
9
20
 
10
21
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spluspy
3
- Version: 2.1.2
3
+ Version: 2.1.4
4
4
  Summary: A modern async Python library for interacting with Soroush Plus
5
5
  Project-URL: Homepage, https://github.com/Itskillmaster/spluspy
6
6
  Project-URL: Documentation, https://github.com/Itskillmaster/spluspy#readme
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "spluspy"
7
- version = "2.1.2"
7
+ version = "2.1.4"
8
8
  description = "A modern async Python library for interacting with Soroush Plus"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  """SplusPy version information."""
2
2
 
3
- __version__ = "2.1.2"
3
+ __version__ = "2.1.4"
4
4
  __author__ = "Ali Mirshekari"
5
5
  __license__ = "MIT"
6
6
  __url__ = "https://github.com/Itskillmaster/spluspy"
@@ -1,3 +1,3 @@
1
1
  # Versions should comply with PEP440.
2
2
  # This line is parsed in setup.py:
3
- __version__ = '2.1.2'
3
+ __version__ = '2.1.4'
@@ -157,6 +157,50 @@ class ChatAdmin:
157
157
  logger.error("unmute_user(chat=%s, user=%s) failed: %s", chat_id, user_id, exc)
158
158
  return False
159
159
 
160
+ async def pin_chat_message(
161
+ self,
162
+ chat_id: int,
163
+ message_id: Union[int, str],
164
+ notify: bool = True,
165
+ ) -> bool:
166
+ """Pin a specific message in a chat.
167
+
168
+ Args:
169
+ chat_id: Target chat.
170
+ message_id: Message identifier to pin.
171
+ notify: If ``True``, notify all members.
172
+
173
+ Returns:
174
+ ``True`` on success, ``False`` on failure.
175
+ """
176
+ try:
177
+ return await self._client.pin_chat_message(
178
+ chat_id, message_id, notify=notify,
179
+ )
180
+ except Exception as exc:
181
+ logger.error("pin_chat_message(chat=%s, msg=%s) failed: %s", chat_id, message_id, exc)
182
+ return False
183
+
184
+ async def unpin_chat_message(
185
+ self,
186
+ chat_id: int,
187
+ message_id: Union[int, str],
188
+ ) -> bool:
189
+ """Unpin a specific message in a chat.
190
+
191
+ Args:
192
+ chat_id: Target chat.
193
+ message_id: Message identifier to unpin.
194
+
195
+ Returns:
196
+ ``True`` on success, ``False`` on failure.
197
+ """
198
+ try:
199
+ return await self._client.unpin_chat_message(chat_id, message_id)
200
+ except Exception as exc:
201
+ logger.error("unpin_chat_message(chat=%s, msg=%s) failed: %s", chat_id, message_id, exc)
202
+ return False
203
+
160
204
  async def pin_message(
161
205
  self,
162
206
  chat_id: int,
@@ -2120,12 +2120,17 @@ class Client(MediaMixin, ChatManagementMixin):
2120
2120
  on_progress=on_progress,
2121
2121
  )
2122
2122
 
2123
- async def pin_message(self, chat_id: int, message: Union[Message, int], *, notify: bool = False) -> bool:
2124
- """Pin a message in a chat.
2123
+ async def pin_chat_message(
2124
+ self,
2125
+ chat_id: Union[int, str],
2126
+ message_id: Union[int, str],
2127
+ notify: bool = True,
2128
+ ) -> bool:
2129
+ """Pin a specific message in a chat.
2125
2130
 
2126
2131
  Args:
2127
- chat_id: Target chat identifier.
2128
- message: :class:`Message` object or message ID to pin.
2132
+ chat_id: Target chat identifier (int ID, ``@username``, etc.).
2133
+ message_id: Message identifier to pin (int or str).
2129
2134
  notify: If ``True``, notify all members about the pin.
2130
2135
 
2131
2136
  Returns:
@@ -2133,38 +2138,89 @@ class Client(MediaMixin, ChatManagementMixin):
2133
2138
  """
2134
2139
  client = self._get_client()
2135
2140
  if not client:
2136
- logger.warning("pin_message skipped: client not connected")
2141
+ logger.warning("pin_chat_message skipped: client not connected")
2137
2142
  return False
2138
- msg_id = message.id if isinstance(message, Message) else message
2143
+ msg_id = int(message_id)
2139
2144
  try:
2140
- await client.pin_message(chat_id, msg_id, notify=notify)
2145
+ try:
2146
+ from spluspy._engine import functions
2147
+ except ImportError:
2148
+ from telethon import functions # type: ignore[import-untyped]
2149
+
2150
+ input_peer = await client.get_input_entity(int(chat_id))
2151
+ await client(functions.messages.UpdatePinnedMessageRequest(
2152
+ peer=input_peer,
2153
+ id=msg_id,
2154
+ silent=not notify,
2155
+ ))
2141
2156
  return True
2142
2157
  except Exception as exc:
2143
- logger.error("pin_message(chat=%s, msg=%s) failed: %s", chat_id, msg_id, exc)
2158
+ logger.error("pin_chat_message(chat=%s, msg=%s) failed: %s", chat_id, msg_id, exc)
2144
2159
  return False
2145
2160
 
2146
- async def unpin_message(self, chat_id: int, message: Union[Message, int]) -> bool:
2147
- """Unpin a message in a chat.
2161
+ async def unpin_chat_message(
2162
+ self,
2163
+ chat_id: Union[int, str],
2164
+ message_id: Union[int, str],
2165
+ ) -> bool:
2166
+ """Unpin a specific message in a chat.
2148
2167
 
2149
2168
  Args:
2150
- chat_id: Target chat identifier.
2151
- message: :class:`Message` object or message ID to unpin.
2169
+ chat_id: Target chat identifier (int ID, ``@username``, etc.).
2170
+ message_id: Message identifier to unpin (int or str).
2152
2171
 
2153
2172
  Returns:
2154
2173
  ``True`` on success, ``False`` on failure.
2155
2174
  """
2156
2175
  client = self._get_client()
2157
2176
  if not client:
2158
- logger.warning("unpin_message skipped: client not connected")
2177
+ logger.warning("unpin_chat_message skipped: client not connected")
2159
2178
  return False
2160
- msg_id = message.id if isinstance(message, Message) else message
2179
+ msg_id = int(message_id)
2161
2180
  try:
2162
- await client.unpin_message(chat_id, msg_id)
2181
+ try:
2182
+ from spluspy._engine import functions
2183
+ except ImportError:
2184
+ from telethon import functions # type: ignore[import-untyped]
2185
+
2186
+ input_peer = await client.get_input_entity(int(chat_id))
2187
+ await client(functions.messages.UpdatePinnedMessageRequest(
2188
+ peer=input_peer,
2189
+ id=msg_id,
2190
+ unpin=True,
2191
+ ))
2163
2192
  return True
2164
2193
  except Exception as exc:
2165
- logger.error("unpin_message(chat=%s, msg=%s) failed: %s", chat_id, msg_id, exc)
2194
+ logger.error("unpin_chat_message(chat=%s, msg=%s) failed: %s", chat_id, msg_id, exc)
2166
2195
  return False
2167
2196
 
2197
+ async def pin_message(self, chat_id: int, message: Union[Message, int], *, notify: bool = False) -> bool:
2198
+ """Pin a message in a chat.
2199
+
2200
+ Args:
2201
+ chat_id: Target chat identifier.
2202
+ message: :class:`Message` object or message ID to pin.
2203
+ notify: If ``True``, notify all members about the pin.
2204
+
2205
+ Returns:
2206
+ ``True`` on success, ``False`` on failure.
2207
+ """
2208
+ msg_id = message.id if isinstance(message, Message) else message
2209
+ return await self.pin_chat_message(chat_id, msg_id, notify=notify)
2210
+
2211
+ async def unpin_message(self, chat_id: int, message: Union[Message, int]) -> bool:
2212
+ """Unpin a message in a chat.
2213
+
2214
+ Args:
2215
+ chat_id: Target chat identifier.
2216
+ message: :class:`Message` object or message ID to unpin.
2217
+
2218
+ Returns:
2219
+ ``True`` on success, ``False`` on failure.
2220
+ """
2221
+ msg_id = message.id if isinstance(message, Message) else message
2222
+ return await self.unpin_chat_message(chat_id, msg_id)
2223
+
2168
2224
  async def unpin_all_messages(self, chat_id: int) -> bool:
2169
2225
  client = self._get_client()
2170
2226
  if not client:
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import logging
5
6
  from dataclasses import dataclass, field
6
7
  from datetime import datetime
7
8
  from typing import TYPE_CHECKING, Any, Optional, Union
@@ -19,6 +20,8 @@ if TYPE_CHECKING:
19
20
  from spluspy.models.media import Media
20
21
  from spluspy.models.user import User
21
22
 
23
+ logger = logging.getLogger("message")
24
+
22
25
 
23
26
  @dataclass(slots=True)
24
27
  class Message:
@@ -163,19 +166,93 @@ class Message:
163
166
  raise RuntimeError("Message is not bound to a client")
164
167
  return await self._client.copy_messages(chat_id, self)
165
168
 
166
- async def pin(self, notify: bool = False) -> bool:
167
- """Pin this message in its chat."""
169
+ async def get_reply_message(self) -> Optional["Message"]:
170
+ """Get the message this message is replying to.
171
+
172
+ Validates that this message is actually a reply by checking
173
+ :attr:`is_reply` / :attr:`reply_to`, then fetches the parent
174
+ message from the server via the bound client.
175
+
176
+ Returns:
177
+ The replied-to :class:`Message`, or ``None`` if this is
178
+ not a reply, the message is not bound, or the fetch fails.
179
+ """
180
+ if self._client is None:
181
+ logger.warning("get_reply_message: message not bound to a client")
182
+ return None
183
+ if not self.is_reply or not self.reply_to:
184
+ return None
185
+ if self.reply_to_message is not None:
186
+ return self.reply_to_message
187
+ try:
188
+ client = self._client._get_client()
189
+ if client is None:
190
+ logger.warning("get_reply_message: underlying client not connected")
191
+ return None
192
+ raw_msg = await client.get_messages(self.chat_id, ids=self.reply_to)
193
+ if raw_msg is None:
194
+ logger.warning(
195
+ "get_reply_message: could not fetch message %s from chat %s",
196
+ self.reply_to, self.chat_id,
197
+ )
198
+ return None
199
+ from spluspy.client.client import _extract_reply_fields
200
+
201
+ sender_id = getattr(raw_msg, "sender_id", None)
202
+ if sender_id is None and hasattr(raw_msg, "from_id") and raw_msg.from_id:
203
+ fid = raw_msg.from_id
204
+ sender_id = (
205
+ getattr(fid, "user_id", None)
206
+ if hasattr(fid, "user_id")
207
+ else (fid if isinstance(fid, int) else None)
208
+ )
209
+ reply_to, reply_to_sender_id = _extract_reply_fields(raw_msg)
210
+
211
+ self.reply_to_message = Message(
212
+ id=raw_msg.id,
213
+ text=getattr(raw_msg, "message", "") or "",
214
+ chat_id=self.chat_id,
215
+ sender_id=sender_id,
216
+ reply_to=reply_to,
217
+ reply_to_sender_id=reply_to_sender_id,
218
+ is_private=getattr(raw_msg, "is_private", True),
219
+ is_group=getattr(raw_msg, "is_group", False),
220
+ is_channel=getattr(raw_msg, "is_channel", False),
221
+ media=getattr(raw_msg, "media", None),
222
+ forward_origin=getattr(raw_msg, "fwd_from", None),
223
+ )
224
+ self.reply_to_message._client = self._client
225
+ return self.reply_to_message
226
+ except Exception as exc:
227
+ logger.warning("get_reply_message failed: %s", exc)
228
+ return None
229
+
230
+ async def pin(self, notify: bool = True) -> bool:
231
+ """Pin this message in its chat.
232
+
233
+ Args:
234
+ notify: If ``True``, notify all members about the pin.
235
+
236
+ Returns:
237
+ ``True`` on success, ``False`` on failure.
238
+ """
168
239
  if self._client is None:
169
240
  raise RuntimeError("Message is not bound to a client")
170
- return await self._client.pin_message(
171
- self.chat_id, self, notify=notify
241
+ return await self._client.pin_chat_message(
242
+ self.chat_id, self.id, notify=notify,
172
243
  )
173
244
 
174
245
  async def unpin(self) -> bool:
175
- """Unpin this message."""
246
+ """Unpin this message.
247
+
248
+ Returns:
249
+ ``True`` on success, ``False`` on failure.
250
+ """
176
251
  if self._client is None:
177
252
  raise RuntimeError("Message is not bound to a client")
178
- return await self._client.unpin_message(self.chat_id, self)
253
+ return await self._client.unpin_chat_message(
254
+ self.chat_id, self.id,
255
+ )
179
256
 
180
257
  async def react(self, emoji: str) -> bool:
181
258
  """Add a reaction to this message."""
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes