Commit Graph

248 Commits

Author SHA1 Message Date
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
Lonami Exo
92088383f7 Fix get_message_history not returning sender on channels (closes #110) 2017-06-15 09:41:39 +02:00
Lonami Exo
fc915b2284 Fix get_message_history ignoring chats and enhance find_user_or_chat 2017-06-14 14:06:35 +02:00
Lonami Exo
96d8ca94cf Move TelegramClient.list_sessions to *Session.list_session 2017-06-14 13:57:30 +02:00
Lonami Exo
1ca41b5854 Automatically infer the value for 'random_id' parameters 2017-06-11 19:16:59 +02:00
Lonami Exo
c6acd6adc5 Use only ASCII characters on the code (closes #104) 2017-06-10 13:39:37 +02:00
Lonami Exo
5c138977c3 Do not cancel UpdatesThread .receive() on reconnection 2017-06-10 13:16:37 +02:00
Lonami Exo
a73be04da7 Move connection parameters to the session 2017-06-10 13:15:04 +02:00
Lonami Exo
1119a2737a Remove markdown "parser" since that's not Telethon-specific 2017-06-10 13:00:39 +02:00
Lonami Exo
44ab85962b Completely change errors (make one class for each) 2017-06-10 11:47:51 +02:00
Lonami Exo
40616ba704 Support arbitrary file objects for .download_file() and update README 2017-06-09 11:12:56 +02:00
Lonami Exo
40f4c2533a Incredibly improve downloading media on different DCs*
* This involves raising the InvalidDCError on .invoke()
when the message is FILE_MIGRATE_X, but users can always
catch this error and use the .invoke_on_dc() function
2017-06-09 10:50:40 +02:00
Lonami Exo
639a17aa5a Cache exported TelegramBareClients instead MtProtoSenders 2017-06-09 10:35:19 +02:00
Lonami Exo
cf65e5b1cf Get rid of signature warnings and use nicer *args instead 2017-06-08 19:03:15 +02:00
Lonami Exo
b760f0de50 Fix reconnection (InvalidDC did not occur on .connect())*
* Also, use the parameters given for the initial connection
instead ignoring them.
2017-06-08 16:51:20 +02:00
Lonami Exo
d788d30de2 Move connect() parameters to init and ignore signature warnings 2017-06-08 16:41:20 +02:00
Lonami Exo
88f87f6de2 Major TelegramClient rewrite, split it into TelegramBareClient*
Making a distinction between a bare client and a full-featured
client will make it easier to create instances of the bare
client itself that can be simultaneously and hence have two
separate connections which do not interfer with eachother.

While writing the bare client, full reconnection to a
different data center is once again done only on .connect().
2017-06-08 13:12:57 +02:00
Lonami Exo
6922eb3d39 Update to v0.10.1 2017-06-07 20:15:27 +02:00
Lonami Exo
4a2b6e7fa8 Don't start another thread unless an update handler is added*
*Also, stop sending pings, automatic reconnection from
commit fb4885a does the job better.
2017-06-07 20:10:57 +02:00
Lonami Exo
49ca5c00c7 Create a more upgrade-resistant JSON-based Session class 2017-06-07 11:48:54 +01:00
Lonami Exo
5c7efdb04f Make use of relative imports everywhere, again 2017-06-05 18:00:43 +02:00
Lonami Exo
cf6f300df1 Improve .is_user_authorized() and add a .get_me() method 2017-06-04 17:24:08 +02:00
Lonami Exo
7acfd0c6c9 Update to v0.10 and some minor grammar fixes 2017-06-03 13:36:41 +02:00
Lonami Exo
b472421b8a Allow specifying custom version/lang code/etc on client.connect 2017-06-03 13:24:27 +02:00
Lonami Exo
6b4f2abb96 Fix disconnect and reconnect for exported senders (#53) 2017-05-30 13:27:23 +02:00
Lonami Exo
097d1669b2 Allow invoking requests on different DCs (#53) 2017-05-30 13:03:14 +02:00
Lonami Exo
a427465231 Tidy up working with different DCs 2017-05-30 12:14:29 +02:00
Lonami Exo
0b9d76bda1 Replace library print()'s with calls to _logger 2017-05-30 10:24:08 +02:00
Lonami Exo
fb4885aed0 Trigger automatic reconnection if server kicks us (#94) 2017-05-30 10:11:18 +02:00
Lonami Exo
6e1798d6ac Update README.rst 2017-05-29 21:37:58 +02:00
Lonami Exo
042e3069a9 Move UpdatesThread from MtProtoSender to TelegramClient
This makes it easier to perform a proper reconnection
2017-05-29 21:24:47 +02:00
Lonami Exo
ebe4232b32 Change the way in which updates are read and handled 2017-05-29 20:41:11 +02:00
Lonami Exo
452532cce7 Make certain methods and members private 2017-05-29 17:06:48 +02:00
Lonami Exo
fabf806979 Add more errors, update to v0.9.1 2017-05-23 10:31:52 +02:00
Lonami Exo
02a847b64a Make lint happier 2017-05-21 13:59:16 +02:00
Lonami Exo
63c89af983 Use relative imports always where possible 2017-05-21 13:02:54 +02:00
Lonami Exo
ca80b05694 Add shebangs and set proper file permissions 2017-05-20 15:58:44 +02:00
Lonami Exo
468033fa7e Avoid counterintuitive automatic connection 2017-05-20 11:33:37 +02:00
Lonami Exo
3c3946e6f1 Don't start the updates thread until signed in 2017-05-19 21:44:50 +02:00
Lonami Exo
2f2ee15efd Update to v0.9 2017-05-19 12:46:17 +02:00
Dmitry D. Chernov
0ef32a7d78 Fix syntax of exception throwing here and there 2017-05-19 08:32:40 +02:00
Dmitry D. Chernov
2ff419a5e7 TelegramClient: Remove redundant check for adding update handlers
Adding update handlers when not authorized makes no negative consequences.
Also, check was implemented badly - update handlers can be added after logout/disconnect, for example.
2017-05-11 17:43:02 +02:00
Dmitry D. Chernov
b7ed6d9ec1 TelegramClient: Fix log_out() returning nothing on success 2017-05-11 17:43:02 +02:00
Lonami Exo
d0284c2bd3 Fix is_user_authorized failing on log_out (closes #76) 2017-05-11 14:11:15 +02:00
Lonami Exo
f64244eb44 Fix TelegramClient not actually supporting temp sessions (#78) 2017-05-11 14:08:38 +02:00
Lonami Exo
c367aa9bc9 Revert a49e50d as suggested by @cher-nov (remove __del__)
__del__'s are evil because they rely on the GC
2017-05-08 16:01:53 +02:00
Dmitry D. Chernov
a49e50d04d TelegramClient: Perform disconnection on class destruction (#74) 2017-05-06 13:40:42 +02:00
Dmitry D. Chernov
ff469acb81 TelegramClient.get_dialogs: Rename 'count' argument to 'limit' (#72) 2017-05-05 15:11:48 +02:00
Lonami Exo
fbc7aabf13 Update to v0.8 2017-04-14 15:33:05 +02:00
Lonami Exo
6b2c0271ae Fix updates thread crashing on logout 2017-04-14 15:28:15 +02:00
Lonami Exo
1d2420d549 Add more informative error message when invoking disconnected 2017-04-11 10:25:09 +02:00
Lonami Exo
6d1ce4d48d Let only the LogOut request be confirmed via ack 2017-04-11 09:57:18 +02:00
Lonami Exo
3e611cdd42 Revert "Workaround for None results"
This reverts commit 6e4c437340.
2017-04-11 09:46:26 +02:00
Lonami Exo
6e4c437340 Workaround for None results (#47) 2017-04-10 09:34:58 +02:00
Lonami Exo
ceca636bb1 Do not connect to Telegram until .connect() is invoked 2017-04-06 18:16:15 +02:00
Ader
4734d4a7f9 Add method to list update handlers (#40) 2017-03-28 18:46:07 +02:00
Lonami Exo
af4514b15e Fix uploading big files (closes #2) 2017-03-25 17:14:11 +01:00
Epix Zhang
350c11d66f Add proxy support using PySocks (closes #37) 2017-03-20 17:16:34 +01:00
Lonami Exo
258c7f1df6 Allow login as a bot (closes #36, thanks to @JuanPotato) 2017-03-20 12:32:10 +01:00
Lonami Exo
628b7391e3 Greatly improve the handling of working with different DC 2017-03-20 12:32:10 +01:00
Belegnar
8753df27ed * reconnect in TelegramClient.connect() forces reconnect only if client was connected 2017-03-10 14:14:51 +03:00
Lonami Exo
8cde95ff95 Update to v0.7.1 2017-02-19 15:48:29 +01:00
Tiago
72e8773338 Fixed download_document() 2017-01-19 15:16:39 +00:00
Lonami Exo
9ca4471bcd Allow passing entities instead input_peers and more*
Some fixes to the interactive client (not handling
invalid options, errors when uploading files)
2017-01-17 20:22:47 +01:00
Lonami Exo
4862ef1dce Merge branch 'master' of https://github.com/fdhadzh/Telethon into fdhadzh-master 2016-11-30 15:56:30 +01:00
Lonami Exo
be2bdc0e13 Implements and closes #12 (custom session objects) 2016-11-30 15:36:59 +01:00
Fadi Hadzh
d087941bd0 Many code-style improvements 2016-11-30 00:29:42 +03:00
Lonami Exo
6c93d08b8d Added two-step verification (fixes #4) and more info for errors 2016-11-26 12:04:02 +01:00
Lonami Exo
4d96de8ab5 Changed README.md to README.rst 2016-11-13 15:39:47 +01:00
Lonami
308adc4192 Fixed invalid parameters when downloading documents 2016-10-09 13:47:38 +02:00
Lonami
a42effc2b5 Externalized TelegramClient utilities and added more 2016-10-09 12:57:38 +02:00
Lonami
2a666f7ee0 Added ability to download profile photos, changes to get_dialogs()
The `get_dialogs()` method now returns dialogs and "entities",
which can be an User, a Chat or even a Channel.
In order to use them you may want to make use of .get_input_peer()
and .get_display_name() methods
2016-10-03 19:44:01 +02:00
Lonami
7399bfacd1 Implemented receive timeout (#6) and fixed error string 2016-10-03 09:54:17 +02:00
Lonami
1ecd51c7d1 Implemented #1 (Sending messages read acknowledge) 2016-10-02 13:57:03 +02:00
Lonami
30f15e67ac Avoid listening for updates if no update handlers are added
This only caused issues if it was the first time we logged in.
All the cases are now covered
2016-10-02 13:42:17 +02:00
Lonami
77aa37d2ad Added an .empty() function to the objects, fixes to msgs_ack
The .empty() function returns an "empty" instance of the object
(attributes set to None). This is used rather than using reflection.

The msgs_ack handling broke stuff (InvokeWithLayer when there were
updates), so this is now handled; yet there may be a better fix
2016-09-26 17:18:25 +02:00
Lonami
36b8a9026f Fixed revert by hand (I hope) 2016-09-26 13:13:11 +02:00
Lonami
4d5e11f4af Revert "Fixed logging out, added a proper function to list sessions"
This reverts commit 87969745f5.
The main purpose is to get rid of the JSON encoding (useless)
2016-09-26 13:06:36 +02:00
Lonami
87969745f5 Fixed logging out, added a proper function to list sessions
By fixing logging out, other request probably got fixed as well,
since now we can also read MessagesAcknowledge requests
2016-09-23 12:50:01 +02:00
Lonami
d8757af5c5 Updated README, minor changes and pip ready
The module is now ready to be installed via pip
README.md has been updated to reflect these changes
Minor changes to the interactive client example
Versioning is now done by editting TelegramClient's
__version__, rather than looking for the string
2016-09-18 12:04:17 +02:00
Lonami
6642f73a3d Detect current MTProtoLayer automatically 2016-09-17 21:09:20 +02:00
Lonami
51a531225f Totally refactored source files location
Now it *should* be easier to turn Telethon
into a pip package
2016-09-17 20:45:12 +02:00