Commit Graph

662 Commits

Author SHA1 Message Date
Lonami Exo
459e988ff5 Rename rpc_n_errors dictionary to rpc_errors_n_all 2017-06-24 18:10:05 +02:00
Lonami Exo
20956b23d1 Replace super calls with simply super() 2017-06-23 10:15:11 +02:00
Lonami Exo
843c16215c Add timeout parameter on TcpClient.connect() too 2017-06-22 19:21:33 +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
a9a5c7e254 Use signed longs for every request_id (#138 follow-up) 2017-06-21 10:21:09 +02:00
Lonami Exo
d58222d007 Use crc32 from zlib instead from binascii
It seems to be a bit faster stackoverflow.com/q/44502855
2017-06-20 11:03:46 +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
697434be37 Don't do anything on .connect() if it's already connected 2017-06-20 09:46:37 +02:00
Lonami
daa626aa04 Merge pull request #136 from cher-nov/pr20170619_session
Fix bugs related to temporary sessions
2017-06-18 23:49:36 +02:00
Dmitry D. Chernov
8d9e50989b Fix temporary Session fields not being defined 2017-06-19 07:41:47 +10:00
Dmitry D. Chernov
2af962230f Fix error 400:CONNECTION_APP_VERSION_EMPTY when using temporary sessions 2017-06-19 07:40:35 +10:00
Hasan
c13164f5cf Use the correct amount of random bytes in DH request
The official documentation says a 2048 *bit* number.
`os.urandom` takes an argument that represents the number of *bytes*.
2048 bits is 256 bytes
2017-06-18 23:38:14 +02:00
Lonami Exo
8afb0a3f6b Rename Request.msg_id to request_msg_id to avoid name clash (fix #122) 2017-06-18 10:01:59 +02:00
Lonami Exo
765ae870cf Fix connection parameters not being copied on reconnection (#129) 2017-06-17 22:05:34 +02:00
Lonami
be33ae4e80 Fix rpc_message_to_error failing to construct them 2017-06-17 08:25:48 +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
92b4125b2b Update to v0.11 2017-06-16 10:11:03 +02:00
Lonami Exo
e7b0c06ca5 Make .get_input_user faster when the right type is given 2017-06-16 10:01:05 +02:00
feodoran
13199f737e Handle more cases on .get_display_name 2017-06-16 09:11:49 +02:00
Lonami Exo
86d45cc276 Improve .get_input_peer and use it only when creating requests*
This avoids cyclic dependencies, so types requiring an InputPeer
as a parameter will NOT convert faulty types to the right ones.
2017-06-15 17:03:59 +02:00
Lonami Exo
c02fbae5aa Allow creating a new parallel connection (closes #102) 2017-06-15 15:50:44 +02:00
Lonami Exo
3fccfd40e6 Show error messages on non-specialized error classes (closes #113) 2017-06-15 15:25:05 +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
d8afb7e548 Also except BlockingIOError on TcpClient.send() 2017-06-12 10:44:04 +02:00
Goblenus
f083b88f59 (Fix) Fix api_id type mismatch 2017-06-12 09:34:53 +02:00
Lonami Exo
1ca41b5854 Automatically infer the value for 'random_id' parameters 2017-06-11 19:16:59 +02:00
Lonami Exo
3ed59d08e5 Fix commit 65912f9 by properly skipping lost messages 2017-06-11 17:53:53 +02:00
Lonami Exo
65912f926b Allow to send more than one request before receiving them (#105) 2017-06-11 14:58:16 +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
5df4716164 Add errors related to #103 2017-06-10 10:08:08 +02:00
Lonami Exo
7adb4f09d6 Slightly reorganise the project structure 2017-06-09 16:13:39 +02:00
Lonami Exo
ba5bfa105f Use memoryview() on TcpClient.write() instead slicing the data 2017-06-09 11:50:30 +02:00
Lonami Exo
c6645a555d Prefer BufferedWriter over BinaryWriter for socket operations 2017-06-09 11:42:39 +02:00
Lonami Exo
5494cb15eb "Don't go nuts switching back and forth between (non-)blocking"
And other improvements (shutting down the socket, proper naming).
https://docs.python.org/3/howto/sockets.html#non-blocking-sockets
2017-06-09 11:27:52 +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
efd1c1ba64 Always acknowledge received errors for server not to resend them 2017-06-09 10:46:39 +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
6a043b7371 Fix Session not being able to save auth_key=None 2017-06-08 16:45:09 +02:00
Lonami Exo
d788d30de2 Move connect() parameters to init and ignore signature warnings 2017-06-08 16:41:20 +02:00
Lonami Exo
a07c7bd0d0 Move InteractiveClient to examples/ (and stop shipping it to pip) 2017-06-08 14:06:32 +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
1860054ec0 Make generate_sequence() thread-safe and move it to Session 2017-06-07 12:00:01 +01:00
Lonami Exo
49ca5c00c7 Create a more upgrade-resistant JSON-based Session class 2017-06-07 11:48:54 +01:00
Lonami Exo
8e3f3063f4 Add more errors and make them more descriptive 2017-06-07 11:09:10 +01:00
Lonami Exo
5c7efdb04f Make use of relative imports everywhere, again 2017-06-05 18:00:43 +02:00
Dmitry D. Chernov
5362f2578d Allow using lists and dicts for passing proxy settings 2017-06-05 09:26:10 +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
153cbfd350 Use more straightforward calls of hashlib.sha1/sha256 2017-06-02 16:49:03 +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
d321096714 Tidy if/else branch on _recreate_socket 2017-05-30 11:42:14 +02:00
Lonami Exo
2399b7e55e Remove try/except if a proxy was used, make more members private 2017-05-30 10:40:33 +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
7c84c72f06 Minor change to make the code more pythonic 2017-05-29 21:27:20 +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
ae1dbc63da Handle UnicodeEncodeError's in a cleaner way 2017-05-29 17:07:09 +02:00
Lonami Exo
452532cce7 Make certain methods and members private 2017-05-29 17:06:48 +02:00
Lonami Exo
63b1881c83 Raise FloodWaitError instead sleeping 2017-05-29 16:46:17 +02:00
Lonami Exo
7f84374e98 Attempt at fixing msg_id too low/high (#95) 2017-05-26 16:39:59 +02:00
Lonami Exo
fabf806979 Add more errors, update to v0.9.1 2017-05-23 10:31:52 +02:00
Lonami Exo
e60c70c1a7 Add more descriptive errors for get_input_peer (#93) 2017-05-23 09:45:48 +02:00
Santiago Reig
b477895830 Enable printing of UTF-8, improvement for #70
Convert strings from UTF-8 to ascii to enable printing in non-compatible shells/terminals with UTF-8.
Non-compatible charaters are removed from the string.
2017-05-22 08:37:11 +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
fb9104417e Add more errors, change the way InvalidDC is created 2017-05-20 15:25:07 +02:00
Lonami Exo
eb7fb2ac24 Make logging a lot less intrusive
See https://docs.python.org/3/howto/logging.html#library-config
2017-05-20 11:49:09 +02:00
Lonami Exo
6550d83d42 Fix closed sockets not being recreated as they should
See http://stackoverflow.com/a/15958099
2017-05-20 11:34:23 +02:00
Lonami Exo
468033fa7e Avoid counterintuitive automatic connection 2017-05-20 11:33:37 +02:00
Dmitry D. Chernov
bbd3eb7c28 Raise an exception if recv() returned 0 bytes
See for details: https://docs.python.org/3/howto/sockets.html
"When a recv returns 0 bytes, it means the other side has closed (or is in the process of closing) the connection. You will not receive any more data on this connection. Ever."
2017-05-20 11:02:19 +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
7f787affc6 MtProtoSender: Fix crash on receiving unknown RPC results
Such RPC results may arrive after reconnection, for example.
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
Dmitry D. Chernov
048bc81b74 MtProtoSender: Use threading.Event instead of boolean flags 2017-05-09 19:50:46 +02:00
Dmitry D. Chernov
7ffe2b3130 TcpClient: Combine two identical function calls into one 2017-05-09 19:50:46 +02:00
Dmitry D. Chernov
15e06f9ce2 TcpClient: Use threading.Event instead of boolean flag 2017-05-09 19:50:46 +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
Lonami Exo
db79ff08c7 Avoid crash on certain terminals (workaround for #70) 2017-05-07 13:33:35 +02:00
Lonami Exo
49a76f23f5 Remove offending characters from #70 2017-05-07 13:05:49 +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
Gholamhossein Tavasoli
8ffec6b8be Improve handling invalid UTF-8 strings (#68) 2017-05-03 13:02:44 +02:00
Lonami Exo
3d66062eb4 Ignore invalid utf-8 strings (closes #49) 2017-05-02 16:16:36 +02:00
Lonami Exo
6069188b54 MtProtoPlainSender was not connecting (closes #62) 2017-04-29 20:57:08 +02:00
Lonami Exo
fbe65c2dfb Reconnect on timeout inside timeout (#61) 2017-04-29 11:07:32 +02:00
Lonami Exo
a7595347f3 Make the UpdatesThread a daemon (closes #60) 2017-04-29 10:41:56 +02:00
Lonami Exo
89326c998a Workaround for #50 suggested by @strayge (send not only Ping) 2017-04-21 14:02:21 +02:00
Lonami Exo
192eb3cf57 Fix crash when receiving MessageServices (closes #52) 2017-04-17 09:36:24 +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
f6c34f8ba2 Add current time to the log output 2017-04-12 10:35:07 +02:00
Lonami Exo
1d2420d549 Add more informative error message when invoking disconnected 2017-04-11 10:25:09 +02:00
Lonami Exo
4fa43f231f Fix "Must wait error" not causing updates thread to sleep 2017-04-11 09:58:22 +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
f24d4f4a0e Fix updates thread not sleeping when handling pings 2017-04-09 13:16:22 +02:00
Lonami Exo
1232e8f607 Add logging to MTProtoSender 2017-04-09 13:14:04 +02:00
Lonami Exo
426b09aec0 Slightly improve the updates thread (also easier to understand) 2017-04-06 18:46:09 +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
b4c81a60b3 Add more errors 2017-03-20 12:44:10 +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
strayge
8256cb3e55 added ping requests 2017-02-19 20:20:21 +06:00
Lonami Exo
b080e086b7 Merge branch 'master' of github.com:LonamiWebs/Telethon 2017-01-30 13:36:38 +01:00
Lonami Exo
11629ecf2f Fix closing socket on Windows 2017-01-30 13:36:15 +01:00
Tiago
72e8773338 Fixed download_document() 2017-01-19 15:16:39 +00:00
Lonami Exo
78fe053ff3 Handle server pongs for manual ping requests 2017-01-19 15:54:28 +01: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
8e48455cdc Fix bug introduced in #d08794 found by @k1-hedayati 2017-01-13 21:22:53 +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 Exo
d290a569c5 Added webp mime type (useful when downloading stickers) 2016-11-13 14:51:50 +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
LiemCH
38bf460930 Update tcp_transport.py
Counter before send, in case of fail send, will not result error 500 random_id_duplicate
2016-10-09 10:10:41 +07: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
e035939aa2 Attempt at fixing #5 (RPCError) and updated README
Now RPC results can be received from the updates thread, as long
as they are errors. This, however, should not happen!
A recursive lock is now used (and released on every method, rather
than only on the `.receive()` one)
2016-10-02 13:30:14 +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
ded655911e Added ability to both read and write vectors*
This change affects the BinaryReader and BinaryWriter
Note that it only allows to write vectors of **TLObjects**,
not any other type
2016-09-26 16:10:07 +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
b68772aab5 Fixed JSON encoding and decoding for lists, added empty() method
The new empty() method retrieves an empty instance of the
given object, with all the attributes set to None
2016-09-25 10:50:48 +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