Dmitry D. Chernov
6ec6967ff9
Make exception types correspond to Python docs
2017-12-28 09:48:02 +10:00
Lonami Exo
1a746e1464
Fix .download_profile_photo() for some channels ( closes #500 )
2017-12-28 09:48:02 +10:00
Lonami Exo
166d5a4012
Fix .get_dialogs() being inconsistent with the return type
2017-12-28 09:48:01 +10:00
Lonami Exo
bdd63b91a2
Fix .download_profile_photo() for some channels ( closes #500 )
2017-12-27 23:54:31 +01:00
Lonami Exo
292e4fc29f
Fix .get_dialogs() being inconsistent with the return type
2017-12-27 23:46:06 +01:00
Lonami Exo
f3d47769df
Fix .send_read_acknowledge() for channels ( #501 )
2017-12-27 15:26:23 +01:00
Lonami Exo
21e5f0b547
Fix GetUsersRequest has a limit of 200
2017-12-27 15:08:29 +01:00
Birger Jarl
73edb0f4ff
Avoid using None dates on file download ( #462 )
2017-12-27 14:52:33 +01:00
Lonami Exo
f96d88d3b5
Modify .get_entity to support fetching many entities at once
2017-12-27 12:36:38 +01:00
Lonami Exo
3512028d0f
Fix .get_input_entity excepting wrong type
2017-12-27 12:36:14 +01:00
Lonami Exo
5c17097d8d
Clean up .get_entity and remove force_fetch
2017-12-27 11:56:05 +01:00
Lonami Exo
aef96f1b68
Remove custom EntityDatabase and use sqlite3 instead
...
There are still a few things to change, like cleaning up the
code and actually caching the entities as a whole (currently,
although the username/phone/name can be used to fetch their
input version which is an improvement, their full version
needs to be re-fetched. Maybe it's a good thing though?)
2017-12-27 00:50:09 +01:00
Lonami Exo
238198db5a
Create a convenient class to wrap Dialog instances
2017-12-24 16:18:09 +01:00
Dmitry D. Chernov
fb9813ae61
TelegramClient.send_code_request(): Change logic of methods invocation
...
Before:
First call, force_sms=False: SendCodeRequest
Next call, force_sms=False: SendCodeRequest
First call, force_sms=True: raise ValueError
Next call, force_sms=True: ResendCodeRequest
That's inconvenient because the user must remember whether the code requested at all and whether the request was successful.
In addition, the repeated invocation of SendCodeRequest does nothing.
This commit changes logic to this:
First call, force_sms=False: SendCodeRequest
Next call, force_sms=False: ResendCodeRequest
First call, force_sms=True: SendCodeRequest, ResendCodeRequest
Next call, force_sms=True: ResendCodeRequest
2017-12-24 21:25:17 +10:00
Lonami Exo
152856dfbc
Add a force_fetch parameter to .get_entity
2017-11-20 10:58:11 +01:00
Vladislav Kolesnichenko
ee5915e86d
Add support for connecting through IPv6 ( #425 for #112 )
2017-11-16 13:30:18 +01:00
Lonami Exo
b346561f89
Remove unnecessary call to .get_input_entity()
2017-11-16 13:24:32 +01:00
Lonami Exo
5a57a8a498
Fix message history failing if sender fwd from channel
...
Closes #424
2017-11-11 19:35:57 +01:00
Lonami Exo
81baced12b
Support t.me/ links when resolving usernames/joinchat links
...
Closes #419
2017-11-10 13:27:51 +01:00
Lonami Exo
7d75eebdab
Make markdown parser use only Telegram's MessageEntity's
2017-11-10 11:07:36 +01:00
Lonami Exo
f381b26790
Add optional force_sms parameter to .send_code_request()
2017-11-04 20:46:02 +01:00
Lonami Exo
1741608f28
Use larger batches for .get_dialogs(limit=None)
2017-11-04 12:35:12 +01:00
Lonami Exo
9a12738f0e
Fix .get_message_history not working with limit=0
2017-10-31 13:52:43 +01:00
Lonami Exo
3d6c8915e3
Allow >100 limits when getting message history (implements #290 )
2017-10-31 12:52:07 +01:00
Lonami
6c2363acd2
Merge pull request #396 from LonamiWebs/md-parsing
...
Support markdown again (implements #118 )
2017-10-30 11:19:48 +01:00
Lonami Exo
7e204632e2
Add parse_mode parameter to TelegramClient.send_message()
2017-10-30 11:17:22 +01:00
Lonami Exo
6567f4b567
Clean .download_contact and a wrong indent level
2017-10-29 20:13:36 +01:00
Lonami Exo
e48f15be80
Fix-up af08d59
(missing parenthesis)
2017-10-28 11:11:51 +02:00
Tanuj
af08d59cb7
Fix bug with semicolons when downloading contacts ( #319 )
2017-10-28 11:09:46 +02:00
Lonami Exo
d7f917ebfc
Update docstrings
2017-10-21 16:59:20 +02:00
Nikolay
9907d763a8
Use peer as key instead top_message on .get_dialogs ( fix #329 )
2017-10-14 11:50:48 +02:00
88ee55
db63b5e39a
Fix .send_message not expecting UpdateNewChannelMessage ( #331 )
2017-10-13 10:53:36 +02:00
Lonami Exo
2a1a4508b8
Allow overriding DocumentAttributes on .send_file ( fix #294 )
2017-10-09 11:20:31 +02:00
Lonami Exo
4673a02ce6
Stop calling .process_entities where not needed
2017-10-09 11:20:31 +02:00
Joscha Götzer
4a482b3506
.get_drafts() and a custom Draft class ( #310 )
2017-10-09 09:54:48 +02:00
Lonami Exo
48c8837f19
Don't look on all dialogs on .get_entity miss
2017-10-08 16:25:50 +02:00
Lonami Exo
a17def8026
Use basename instead abspath for filename attribute ( #294 )
2017-10-06 21:48:53 +02:00
Lonami Exo
3bf70692b4
Fix TelegramClient.get_input_entity always failing/missing return
2017-10-06 21:43:04 +02:00
Lonami Exo
804a29d0bc
Fix get_input_entity from peer ID not actually working
2017-10-06 21:05:02 +02:00
Lonami Exo
7aa21dbd07
Fix .get_dialogs to never return more than limit
2017-10-05 13:55:58 +02:00
Lonami Exo
99cc0778bb
Allow EntityDatabase to be accessed by phone
2017-10-05 13:01:00 +02:00
Lonami Exo
e5c4df98df
Use EntityDatabase on TelegramClient.get_entity instead lru_cache
2017-10-05 12:27:32 +02:00
Joscha Götzer
6c375a7aed
Add method to .delete_messages() ( #282 )
2017-10-02 18:59:29 +02:00
3bl3gamer
0f019f0476
Rename last subclass_of_id to upper case ( #285 )
2017-10-02 13:26:55 +02:00
Lonami Exo
ba147bbe10
Fix TgClient.get_input* not calling utils.get_input* when needed
2017-10-01 21:15:49 +02:00
Lonami Exo
43f796caab
Fix .get_dialogs() failing on Windows
2017-10-01 21:02:41 +02:00
Lonami Exo
62ea77cbea
Fix opposite condition on .get_dialogs
2017-10-01 19:45:42 +02:00
Lonami Exo
269949595f
Allow phone as int on .sign_in ( #278 )
2017-10-01 19:02:53 +02:00
Lonami Exo
d30fdbe778
Support "string" peers on .get_input_entity
2017-10-01 16:59:18 +02:00
Lonami Exo
8df4d7c4a5
Internal methods should use .get_input_entity
2017-10-01 16:54:11 +02:00
Lonami Exo
1cdf879888
Fix .get_input_entity failing for chats
2017-10-01 16:53:47 +02:00
Lonami Exo
71b6e527a6
Allow using parenthesis or spaces in phones when .get_entity
2017-10-01 15:50:23 +02:00
Lonami Exo
5b6f9b6542
Add a new .get_input_entity method and use it on .get_entity
2017-10-01 14:19:04 +02:00
Lonami Exo
9445d2ba53
More enhancements on .sign_in from different clients ( #278 )
2017-10-01 11:37:18 +02:00
Lonami Exo
1d250a5441
Allow overriding phone on .sign_in ( fix #278 )
2017-10-01 11:31:26 +02:00
Lonami Exo
68e7d481f4
Add support to get all dialogs at once
2017-10-01 11:25:12 +02:00
Lonami Exo
671ac1cdb7
Fix **kwargs not being passed to TelegramBareClient
2017-09-30 18:02:08 +02:00
Lonami Exo
61033b2f56
Allow disabling spawning a second thread
2017-09-30 11:28:15 +02:00
Lonami Exo
7cef5885fa
Rename process_updates/polling to workers
2017-09-30 11:17:31 +02:00
Lonami Exo
479afddf50
Move core functionality to the TelegramBareClient
...
Rationale: the intended behaviour of the TelegramClient will now
be to focus on abstracting the users from manually importing
requests and types to work with Telegram's API. Thus, all the
core functionality has been moved to the TelegramBareClient,
which will now be responsible of spawning new threads or
connections and even handling updates.
This way there is a clear distinction between the two clients,
TelegramClient is the one meant to be exposed to the end user,
since it provides all the mentioned abstractions, while the
TelegramBareClient is the "basic" client needed to work with
the API in a comfortable way.
There is still a need for an MtProtoSender, which still even
lower level, and knows as little as possible of what requests
are. This handles parsing the messages received from the
server so that their result can be understood.
2017-09-30 10:27:46 +02:00
Lonami Exo
b61deb5cfb
Delete methods to create_new_connection and invoke_on_dc
2017-09-30 10:27:46 +02:00
Lonami Exo
0a693c705a
Create a new connection when called from a different thread
...
This allows to invoke several requests in parallel while not
waiting for other requests to be written to the network.
2017-09-30 10:27:46 +02:00
Lonami Exo
56103845de
Fix LogOutRequest consuming all retries ( #270 )
2017-09-29 13:58:15 +02:00
Lonami Exo
afc4bd9cab
Rename constructor/subclass_of_id to upper case, keep only static
2017-09-29 13:11:33 +02:00
Lonami Exo
f233110732
Allow sending several requests at once through new MessageContainer
2017-09-25 20:52:27 +02:00
Lonami Exo
c0ee123156
Add a small sleep when trying to reconnect forever
2017-09-25 11:04:09 +02:00
Lonami Exo
b04607e7ba
Ignore requests invoked from ReadThread instead raising
...
Any unhandled exception on the ReadThread would cause it to stop,
and handling the exception to the main thread on the next invoke
or poll. Instead causing the thread to stop, simply ignore it.
2017-09-23 11:31:58 +02:00
Lonami Exo
b0f6b23e52
Fix creating new connections accessing invalid attributes
2017-09-22 16:11:07 +02:00
Lonami Exo
bfa3001f87
Fix MainThread would lock when reconnecting
...
This is because it was thinking that the ReadThread would be
ready to read the result, but actually, this thread is also
locked trying to reconnect at the same time
2017-09-22 16:02:10 +02:00
Lonami Exo
6d60e83adc
Start background thread only if it was None
2017-09-22 13:13:41 +02:00
Lonami Exo
4d5f16f2aa
Fix background thread could not reconnect properly
2017-09-22 12:44:09 +02:00
Lonami Exo
4245ec5abc
Make reconnect private
2017-09-22 12:31:41 +02:00
Lonami Exo
bc15b451b5
Use a safer reconnect behaviour (respect multithread too)
2017-09-22 12:20:38 +02:00
Lonami Exo
12c6d4d3ac
Start the background thread only if the user is authorized
2017-09-21 15:36:20 +02:00
Lonami Exo
2b2da843a1
Create a Connection only once and avoid no-op if was "connected"
2017-09-21 13:44:22 +02:00
Lonami Exo
c22224f516
Attempt at handling ProxyConnectionError on .connect()
2017-09-20 13:23:52 +02:00
Lonami Exo
b8d7b1c8af
Phone number shouldn't actually start with '+'
2017-09-20 13:23:52 +02:00
jiang gau
9ae4f7f641
Fix wrong check on .send_message ( closes #250 )
2017-09-19 16:27:10 +02:00
Lonami Exo
91f44613a8
Fix SendMessageRequest could return UpdateShortSentMessage
2017-09-18 11:59:55 +02:00
Lonami Exo
143e046cf5
Attempt at passing errors to the main thread through .updates
2017-09-18 10:59:54 +02:00
Lonami Exo
e3ab98815d
Fix reconnect on TypeNotFoundError failing
2017-09-18 10:21:53 +02:00
Lonami Exo
e0e3947d2f
Fix some misleading errors/documentation
2017-09-18 09:37:20 +02:00
Lonami Exo
940dfe6816
Fix process_updates=True preventing new sessions from signing in
2017-09-17 18:13:58 +02:00
Lonami Exo
05a8723d36
Catch calling .receive() when .sender is None on recv_thread
2017-09-17 16:37:08 +02:00
Lonami Exo
73fe7258d1
Modify .send_message to return the sent message object
2017-09-13 12:00:27 +02:00
Lonami Exo
d12fb5b924
Add an optional reply_to parameter to .send_message/media
2017-09-13 11:51:23 +02:00
Lonami Exo
7043f4c9ba
Add a convenience method to send voice notes
2017-09-13 11:30:20 +02:00
Lonami Exo
a76c31ede2
Add lru_cache decorator to .get_entity()
2017-09-11 12:53:39 +02:00
Lonami Exo
83f9cafabf
Make .get_entity() public
2017-09-11 11:54:32 +02:00
Lonami Exo
188b1c8816
Fix client reconnection not actually working
2017-09-11 11:38:36 +02:00
Lonami Exo
48dead76ac
Retry up to five times before giving up on a request
2017-09-11 10:52:36 +02:00
Lonami Exo
54ba0661c6
Fix wrong variable name causing .connect() to fail
2017-09-08 18:28:31 +02:00
Lonami Exo
c81537bed0
Simplify the workflow with UpdateState exposing a single flag param
2017-09-08 12:54:38 +02:00
Lonami Exo
25bbb20b0c
Use RLocks properly on MtProtoSender (only needed on net IO)
2017-09-07 21:32:46 +02:00
Lonami Exo
16a5ab3070
Add back the periodic PingRequest
2017-09-07 21:23:37 +02:00
Lonami Exo
a24b4020fe
Allow adding update handlers without the need to poll updates
2017-09-07 20:29:51 +02:00
Lonami Exo
b8e881b6b6
Add basic updates processing to ignore updates with lower .pts
2017-09-07 20:17:40 +02:00
Lonami Exo
d237375208
Allow adding callback methods to UpdateState
2017-09-07 18:58:54 +02:00
Lonami Exo
d4f36162cd
Create and use UpdateState to .process() unhandled TLObjects
2017-09-07 18:49:08 +02:00
Lonami Exo
49e884b005
Raise AssertionError if trying to invoke requests from ReadThread
2017-09-07 18:48:41 +02:00
Lonami Exo
06b2834c02
Fix GetContactsRequest using str instead int (layer 70->71) ( #234 )
2017-09-07 10:45:55 +02:00
Lonami Exo
a38381665c
Support invoking requests from within the ReadThread ( fixes #226 )
2017-09-04 20:28:41 +02:00
Lonami Exo
fe86b88bef
Make .sign_up() return the logged user just like .sign_in()
2017-09-04 18:07:20 +02:00
Lonami Exo
15fd5390ae
Optimize imports
2017-09-04 17:18:33 +02:00
Lonami Exo
97cab7347b
Make lint happier
2017-09-04 17:10:04 +02:00
Lonami Exo
6f0bd14c2f
Use an Enum for the ConnectionMode and support specifying it
2017-09-04 11:24:10 +02:00
Lonami Exo
27408b46da
Only reconnect from background thread if .disconnect wasn't called
2017-09-03 13:44:52 +02:00
Lonami Exo
fa34c4bb77
Handle ConnectionResetError on background thread (removed on 9bc1f64
)
2017-09-03 10:05:18 +02:00
Lonami Exo
494b82ea9d
Fix check to avoid (dis)connecting if already (dis)connected
2017-09-03 09:59:37 +02:00
Lonami Exo
4de4026bb3
Move the "constant read" thread to the main TelegramClient
2017-09-03 09:56:10 +02:00
Lonami Exo
9bc1f64efe
Move update handling to the MtProtoSender, being functional again
2017-09-02 21:46:44 +02:00
Lonami Exo
21eaf8bd72
Allow setting whether the MtProtoSender should use constant_read
2017-09-02 21:27:11 +02:00
Lonami Exo
b908296efa
Remove unused TcpClien.read(timeout=...) param, change other accessors
2017-09-02 19:33:42 +02:00
Lonami Exo
43b79c3d36
Add a thread to constantly read messages from the network
2017-09-02 18:27:22 +02:00
Lonami Exo
0197271f74
Fix SignUpRequest using an incorrectly named parameter
2017-09-02 16:52:56 +02:00
Lonami Exo
bea1b7f526
Preserve backward compatibility with old .sign_in() code
2017-08-31 10:38:53 +02:00
Lonami
5f636fdf31
Let .sign_in() call .send_code_request()
2017-08-31 10:34:09 +02:00
Lonami Exo
7ad2ece168
Simplify modifying TelegramClient.session through its __init__
2017-08-29 16:06:14 +02:00
Lonami Exo
22673aec0e
Replace the old Session+pickle with JsonSession (name change)
2017-08-29 15:59:08 +02:00
Lonami Exo
b7dbf9767e
Fix TelegramClient.sign_in not accepting an integer for the code
2017-08-24 18:05:32 +02:00
Lonami Exo
d5323c5506
Enhance a lot choosing a valid path when downloading files
2017-08-24 17:44:38 +02:00
Lonami Exo
0cae62f091
Fix silly bug with two wrongly ordered lines (on download document)
2017-08-23 16:06:41 +02:00
Lonami Exo
c0bae1d608
Replace type(...) == ... with isinstance() checks
2017-08-23 01:45:49 +02:00
Lonami Exo
8ed77418bf
Make .download_profile_photo() more friendly
2017-08-23 01:35:12 +02:00
Lonami Exo
1d0ad9628d
Rename "callback" to "progress_callback" for consistency
2017-08-23 00:55:34 +02:00
Lonami Exo
fd6a9a4318
Make downloading files a lot more friendly with .download_media()
2017-08-23 00:48:00 +02:00
Lonami Exo
4234efcc86
Make sending files a lot more friendly with a simple .send_file()
2017-08-23 00:27:33 +02:00
Lonami Exo
81ccd21cdb
Allow specifying a phone number or username for common methods
2017-08-23 00:01:10 +02:00
Lonami Exo
1a6231472e
Ensure the connection is flagged as closed on errors, move #201
2017-08-22 23:12:32 +02:00
Tural
12b84c929a
Fix log_out problems on macOS devices
2017-08-21 09:00:23 +02:00
MeytiGHG
1794acdfec
Check for isinstance(x, JsonSession) instead crashing during transition
2017-08-07 00:54:23 +02:00
Lonami Exo
160a3699ac
Fix confusing names "MtProtoRequest" and ".confirmed" ( #176 )
...
This also fixes the annoyingly confusing message:
"Odd msg_seqno expected (relevant message), but even received."
2017-07-24 16:54:48 +02:00
Lonami Exo
773376ee21
Fix two more spelling mistakes
2017-07-23 18:38:27 +02:00
Lonami Exo
fe2e9f335b
Style enhancements for PR #173
2017-07-23 17:08:04 +02:00
hnikaein
c9e566342e
All download_* methods now accept streams
2017-07-20 09:37:19 +02:00
Lonami Exo
1f7ac71187
Debug level should always be used for logging since it's a library
2017-07-10 15:21:20 +02:00
Lonami Exo
0119a00658
Rename no_webpage to link_preview for clarity
2017-07-07 10:37:19 +02:00
Lonami Exo
9bb6353fa3
Fix send_message using the incorrect type to return the msg_id ( #156 )
2017-07-04 16:53:07 +02:00
Lonami Exo
127e5f70d8
Update to v0.11.2
2017-07-04 10:39:57 +02:00
Lonami Exo
1f3aec589b
Let TelegramBareClient handle FileMigrateErrors instead ( closes #148 )
2017-07-04 10:21:15 +02:00
Lonami Exo
15673d9f77
Let __call__ = invoke, and encourage this new way to invoke requests
2017-07-02 11:56:40 +02:00
Lonami Exo
23e2802215
Update to layer 68
2017-06-30 11:48:45 +02:00
Lonami Exo
20956b23d1
Replace super calls with simply super()
2017-06-23 10:15:11 +02:00
Lonami Exo
e4fbd87c75
Turn timeout into a property instead leaving it as a parameter
2017-06-22 11:43:42 +02:00
Lonami Exo
52a42661ee
Add timeout to connect()
2017-06-22 10:39:00 +02:00
Lonami Exo
86358d7805
Add periodic pings if an updates thread was started (closes #138 )
2017-06-20 09:46:37 +02:00
Lonami Exo
765ae870cf
Fix connection parameters not being copied on reconnection ( #129 )
2017-06-17 22:05:34 +02:00
Lonami Exo
2b85463ce6
Don't ignore more possible updates on .receive_updates() ( closes #117 )
2017-06-16 15:36:47 +02:00
Goblenus
c304ee903f
Trigger reconnection on BrokenPipeError and InvalidChecksumError
2017-06-16 14:59:10 +02:00
Lonami Exo
c02fbae5aa
Allow creating a new parallel connection ( closes #102 )
2017-06-15 15:50:44 +02:00