1616# You should have received a copy of the GNU Lesser General Public License
1717# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
1818
19- import logging
20- from typing import Iterable , List , Optional , Union
19+ from typing import Iterable , List , Optional , Union , overload
2120import re
2221import pyrogram
2322from pyrogram import raw , types , utils
2423
25- log = logging .getLogger (__name__ )
26-
2724
2825class GetMessages :
26+ # Invalid arguments (chat and string message_id provided)
27+ @overload
28+ async def get_messages (
29+ self : "pyrogram.Client" ,
30+ chat_id : Union [int , str ],
31+ message_ids : str ,
32+ reply : None = None ,
33+ pinned : None = None ,
34+ replies : int = 1 ,
35+ ) -> Optional ["types.Message" ]: ...
36+ # Invalid arguments (only message_ids with type int or Iterable of int provided)
37+ @overload
38+ async def get_messages (
39+ self : "pyrogram.Client" ,
40+ chat_id : None = None ,
41+ message_ids : Union [int , Iterable [int ]] = 0 ,
42+ reply : None = None ,
43+ pinned : None = None ,
44+ replies : int = 1 ,
45+ ) -> None : ...
46+ # Invalid arguments (only chat provided)
47+ @overload
48+ async def get_messages (
49+ self : "pyrogram.Client" ,
50+ chat_id : Union [int , str ],
51+ message_ids : None = None ,
52+ reply : None = None ,
53+ pinned : None = None ,
54+ replies : int = 1 ,
55+ ) -> None : ...
56+ # Invalid arguments (only pinned provided)
57+ @overload
58+ async def get_messages (
59+ self : "pyrogram.Client" ,
60+ chat_id : None = None ,
61+ message_ids : None = None ,
62+ reply : None = None ,
63+ pinned : bool = True ,
64+ replies : int = 1 ,
65+ ) -> None : ...
66+ # Invalid arguments (nothing provided)
67+ @overload
68+ async def get_messages (
69+ self : "pyrogram.Client" ,
70+ chat_id : None = None ,
71+ message_ids : None = None ,
72+ reply : None = None ,
73+ pinned : None = None ,
74+ replies : int = 1 ,
75+ ) -> None : ...
76+ # One message
77+ @overload
78+ async def get_messages (
79+ self : "pyrogram.Client" ,
80+ chat_id : Union [int , str ],
81+ message_ids : Union [int , str ],
82+ reply : Optional [bool ] = None ,
83+ pinned : Optional [bool ] = None ,
84+ replies : int = 1 ,
85+ ) -> Optional ["types.Message" ]: ...
86+ # One message with string
87+ @overload
88+ async def get_messages (
89+ self : "pyrogram.Client" ,
90+ chat_id : None = None ,
91+ message_ids : str = "" ,
92+ reply : Optional [bool ] = None ,
93+ pinned : Optional [bool ] = None ,
94+ replies : int = 1 ,
95+ ) -> Optional ["types.Message" ]: ...
96+ # Many messages
97+ @overload
98+ async def get_messages (
99+ self : "pyrogram.Client" ,
100+ chat_id : Union [int , str ],
101+ message_ids : Iterable [int ],
102+ reply : Optional [bool ] = None ,
103+ pinned : Optional [bool ] = None ,
104+ replies : int = 1 ,
105+ ) -> List ["types.Message" ]: ...
106+ # Pinned message
107+ @overload
108+ async def get_messages (
109+ self : "pyrogram.Client" ,
110+ chat_id : Union [int , str ],
111+ message_ids : None = None ,
112+ reply : Optional [bool ] = None ,
113+ pinned : bool = False ,
114+ replies : int = 1 ,
115+ ) -> Optional ["types.Message" ]: ...
116+ # Pinned message with provided message ids
117+ # - message ids will not affect result
118+ @overload
119+ async def get_messages (
120+ self : "pyrogram.Client" ,
121+ chat_id : Union [int , str ],
122+ message_ids : Optional [Union [int , Iterable [int ], str ]] = None ,
123+ reply : Optional [bool ] = None ,
124+ pinned : bool = False ,
125+ replies : int = 1 ,
126+ ) -> Optional ["types.Message" ]: ...
29127 async def get_messages (
30128 self : "pyrogram.Client" ,
31129 chat_id : Optional [Union [int , str ]] = None ,
32130 message_ids : Optional [Union [int , Iterable [int ], str ]] = None ,
33131 reply : Optional [bool ] = None ,
34132 pinned : Optional [bool ] = None ,
35- replies : int = 1
36- ) -> Optional [ Union ["types.Message" , List ["types.Message" ] ]]:
133+ replies : int = 1 ,
134+ ) -> Union [Optional [ "types.Message" ] , List ["types.Message" ]]:
37135 """Get one or more messages from a chat by using message identifiers or link.
38136
39137 You can retrieve up to 200 messages at once.
@@ -55,7 +153,7 @@ async def get_messages(
55153 the previous message you replied to using this message.
56154
57155 pinned (``bool``, *optional*):
58- If True, you will get pinned message.
156+ If True, you will get last pinned message.
59157
60158 replies (``int``, *optional*):
61159 The number of subsequent replies to get for each message.
0 commit comments