Lonami Exo
a1b22e0911
Support incoming=False to indicate outgoing=True
2018-05-28 18:25:01 +02:00
ferferga
2c9d3d2fed
Better handling of video notes ( #803 )
2018-05-24 12:28:10 +02:00
Lonami Exo
03f0044ef8
Change default iter/get messages limit
...
And fix-up previous commit.
2018-05-24 10:40:44 +02:00
Lonami Exo
a076688fdc
Avoid sending min_id/max_id params in iter_messages
2018-05-24 10:19:48 +02:00
Lonami Exo
fac6b2348b
Fix pts may be 0 with no workers set ( #808 )
2018-05-22 10:39:40 +02:00
Lonami Exo
b667bb0c1a
Fix some chat IDs start with 1000
2018-05-20 12:31:57 +02:00
Lonami Exo
129f5bf1f8
Add an additional check to avoid duplicate iter_messages
2018-05-17 12:08:52 +02:00
Lonami Exo
cffef411b2
Enhance documentation
2018-05-17 12:00:22 +02:00
Lonami Exo
a8be4bb615
Fix catch_up may use None state
2018-05-17 10:42:20 +02:00
Lonami Exo
89182ea010
Fix iter_messages + from_user not working without filter
2018-05-17 10:17:22 +02:00
Lonami Exo
208adc93a6
Stop using without rowid altogether
...
While something nice to have if supported, it just causes problems
for people trying to use the same session accross systems having
different sqlite versions. See https://t.me/TelethonChat/36771 .
2018-05-14 17:41:47 +02:00
Lonami Exo
c010683685
Fix using *args on phone migrate
2018-05-13 17:15:25 +02:00
Lonami Exo
32b7e9e27a
Whitelist generator's mismatching ID and ya username
2018-05-12 16:12:42 +02:00
Lonami Exo
e3c6676795
Fix short special usernames not being valid (like vote)
2018-05-11 10:09:38 +02:00
Lonami Exo
ee51aa7073
Fix lost requests on disconnect need_confirmation.clear
...
The pending acks shouldn't be cleared, in case of a reconnection
these would be pretty common. E.g. disconnect(), connect(),
invoke, repeat.
2018-05-10 16:45:55 +02:00
Lonami Exo
eb22bce2d9
Add missing connect abstractmethod
2018-05-10 16:16:23 +02:00
Lonami Exo
ba4b7ce881
Make the Connection a proper ABC ( #509 )
2018-05-10 14:22:19 +02:00
Lonami Exo
dd954b8fbd
Avoid receive busy wait when two threads receive items
2018-05-10 09:44:25 +02:00
Lonami Exo
ef509d13c7
Move InvokeAfterMsg to TLMessage to cleanly confirm results
2018-05-09 16:18:42 +02:00
Lonami Exo
e2e7e631b5
Stop using *args when invoking many requests at once
2018-05-09 10:19:45 +02:00
Lonami Exo
e200acbca8
Allow sending ordered MessageContainer
2018-05-09 09:46:07 +02:00
Lonami Exo
bda7eb0ef1
Update to v0.19
2018-05-07 21:30:12 +02:00
Lonami Exo
392508c78d
Add voice/video note parameters to send_file
2018-05-07 19:53:32 +02:00
Lonami Exo
37436bdeee
First attempt at updates catch_up for private chats/groups
2018-05-07 18:02:15 +02:00
Lonami Exo
6652fe276c
Remove broken packet length check
2018-05-07 17:05:27 +02:00
Lonami Exo
f06b9b68d5
Fix race condition causing broken responses
2018-05-07 17:01:04 +02:00
Lonami Exo
2922e8df11
Fix still broken log for broken packets
2018-05-07 16:46:58 +02:00
Lonami Exo
6cd96389c0
Call disconnect on ConnectionResetError hoping a reconnection
...
Maybe self._reconnect() had no effect unless a clean disconnect
was done, and so retrying would be mostly useless. Just a guess.
2018-05-06 18:59:53 +02:00
Lonami Exo
f442e01560
Documentation enhancements
2018-05-06 13:03:30 +02:00
Lonami Exo
2045e00563
Stop manually constructing InputFileLocation
2018-05-06 11:46:04 +02:00
Lonami Exo
ee1e4e18f6
Clean-up download_profile_photo and add missing cases
2018-05-06 11:41:42 +02:00
Lonami Exo
d6935355ae
Fix two tiny typos
2018-04-28 13:42:36 +02:00
Lonami Exo
ce7e5abb58
Support filtering events.Raw by update type
2018-04-28 13:37:19 +02:00
Lonami Exo
5c6ac18a52
Attach original_update to all events
2018-04-28 12:58:41 +02:00
Lonami Exo
08dbc42718
Update to layer 76
2018-04-28 11:49:43 +02:00
Lonami Exo
dc273ab6bc
Add utils.get_input_location
2018-04-27 21:11:13 +02:00
Lonami Exo
f16289cf93
Support download_file with None path to return bytes
2018-04-27 21:11:13 +02:00
Lonami Exo
b71511cd63
Fix saving update state in the SqliteSession
2018-04-27 21:11:13 +02:00
Lonami Exo
2a00bcaa12
Persist updates.State upon disconnection
2018-04-25 13:37:29 +02:00
Lonami Exo
e2a0de1913
Don't retry forever on TcpClient.connect()
2018-04-25 10:06:11 +02:00
Lonami Exo
387a255221
Faster iter_messages by sleeping only as much as needed
2018-04-25 09:51:50 +02:00
Lonami Exo
ea404c5477
Add update_state table to persist pts and such
2018-04-23 21:16:09 +02:00
Lonami Exo
ab91bc2829
Add missing InputPhoto/Document -> InputMedia autocast
2018-04-23 15:33:44 +02:00
Lonami Exo
f31ca142a3
Support autocast to InputMessage
2018-04-23 11:05:38 +02:00
Lonami Exo
6ecef42ec7
Add search/filter/from_user parameters to iter_messages
2018-04-22 16:30:14 +02:00
Lonami Exo
544651caa7
Retry on RpcCallFailError
2018-04-22 16:30:00 +02:00
Lonami Exo
5dc43276bb
Add missing caption when sending Message with media
2018-04-20 09:44:33 +02:00
Lonami Exo
1c2e9d2f27
Fix reply_to didn't override Message's reply on sending them
2018-04-20 09:36:34 +02:00
Lonami Exo
b0dda777fe
Support omitting the entity on client.edit_message
2018-04-18 10:27:44 +02:00
Yifei Kong
03bebfb600
Fix tiny docstring typo ( #771 )
2018-04-17 13:01:23 +02:00
Lonami Exo
6893359f9d
Fix tiny error in a docstring for #764
2018-04-15 16:21:15 +02:00
Lonami Exo
f9b9fa6e70
Update to v0.18.3
2018-04-15 15:41:11 +02:00
Lonami
ffdfa8f262
Merge pull request #766 from LonamiWebs/tidygenerator
...
Tidy up the telethon-generator package
2018-04-15 13:21:26 +02:00
Lonami Exo
3b7c4fe278
Further TLObject generator clean-up
...
Split everything into several functions, reused some more
common code (like accessing the "real" arguments instead
constantly filtering) and more, like using classmethods
instead staticmethods and then hardcoding the class name.
2018-04-14 20:28:25 +02:00
Jon Besga
0017ce30e6
Set client._authorized after log_out() ( #765 )
2018-04-14 19:15:33 +02:00
Lonami Exo
200d3c0360
Clean-up unused methods and reuse more common utils
2018-04-14 17:22:39 +02:00
Lonami Exo
ace715e059
Don't log broken packets as individual bytes
2018-04-14 15:02:27 +02:00
Lonami Exo
75d37a3870
Handle web pages on .download_media
2018-04-14 13:07:50 +02:00
Lonami Exo
88597f0da8
Don't get full channel on iter_participants unless necessary
2018-04-14 12:08:50 +02:00
Lonami Exo
4da7df6349
Several documentation fixes and additions
2018-04-14 12:03:08 +02:00
Lonami Exo
a13863a4fb
Re-export events.Raw (removed on b7c3f80
)
2018-04-13 17:36:23 +02:00
Lonami Exo
1316e07dca
Add missing InputPeerSelf case to .get_entity()
2018-04-13 13:24:37 +02:00
Lonami Exo
17a2946311
Fix get_input_peer allow_self for custom.Dialog
2018-04-13 13:08:29 +02:00
vegeta1k95
3bf259d6b3
Make TLObjects picklable ( #752 )
2018-04-12 18:02:46 +02:00
vegeta1k95
bd1b0ecdb4
Make RPCError class picklable ( #751 )
2018-04-08 16:48:55 +02:00
Lonami Exo
414fec91f1
Stop using input version on events to just get the ID
2018-04-08 15:55:10 +02:00
Lonami Exo
93b5909be5
Add chat_id-like convenience properties to the events
2018-04-08 14:24:01 +02:00
Jeff
259bb6ace1
Several documentation fixes/additions ( #750 )
2018-04-08 14:15:26 +02:00
Lonami Exo
8e01946957
Fix .start() failing on some terminals
2018-04-08 11:47:18 +02:00
Lonami Exo
5fd6155168
Fix remove_event_handler's loop
2018-04-08 11:22:59 +02:00
Lonami Exo
e69c186782
Support more filter types for convenience ( #745 )
2018-04-07 12:31:30 +02:00
Lonami Exo
3b2d065d35
Simplify .get_input_entity code flow (since 591e34b
)
2018-04-06 19:21:02 +02:00
Lonami Exo
0cd44b245c
Allow auto-casting custom.Dialog into input_entity
2018-04-06 19:11:31 +02:00
Lonami Exo
baa6976a0b
Fix broken links, add more examples and a new section
2018-04-06 19:00:21 +02:00
Lonami Exo
b7c3f80679
Split events into separate files
2018-04-05 20:14:22 +02:00
Lonami Exo
f9f49a893b
Return a single message from client.forward on non-list inputs
2018-04-04 20:58:58 +02:00
Lonami Exo
591e34b491
Change TypeError with ValueError, don't call .get_dialogs()
...
This closes #735 and #736 since now it can be properly handled
from user code, and behave more correctly depending on the situation.
Also the errors provide more information on how to get around it.
2018-04-04 13:35:51 +02:00
Lonami Exo
07a8a73e3e
Support callable parse_mode's
...
This allows to more easily plug in custom parse methods.
2018-04-03 14:23:05 +02:00
Lonami Exo
eabaa3854a
Replace offset with match.start() to allow custom regex
2018-04-03 13:47:40 +02:00
Tanuj
a1448f3da8
Clearer variable names in get_input_entity ( #738 )
2018-04-03 13:05:01 +02:00
Lonami Exo
7bc021bba4
Update to layer 75 (again)
2018-03-30 20:28:07 +02:00
Lonami Exo
500792975e
Handle AUTH_KEY_DUPLICATED on connection
2018-03-30 12:18:18 +02:00
Lonami Exo
2b9babb30f
Handle GzipPacked lost requests & possibly fix reading normal
...
Reading normal "lost" requests didn't .seek(-4) to read the TLObject
again. Now it has been slightly refactored to seek back always and
only seek forward when needed (e.g. rpc error).
2018-03-30 11:50:41 +02:00
Lonami Exo
dede5520dd
Rename .entities -> ._entities from 7e9d19d
to avoid collision
2018-03-29 00:56:05 +02:00
Lonami Exo
395e702586
Make py:obj default Sphinx's role
2018-03-28 16:03:47 +02:00
Lonami Exo
dcb7820c5f
Add a new events.MessageRead
2018-03-28 15:52:55 +02:00
Lonami Exo
1fdf976c04
Update to v0.18.2
2018-03-27 18:02:55 +02:00
Kyle2142
6c9becb1ed
Add edit_2fa function ( #725 )
2018-03-27 17:35:33 +02:00
Lonami Exo
302a823c88
Fix invalid access to .participants on chat forbidden result
2018-03-27 17:15:22 +02:00
Lonami Exo
7b94530bfc
Move me/self check on get_input_entity to the beginning
...
It would otherwise fail since the addition of getting entity
by exact name if someone had 'me' or 'self' as their name.
2018-03-27 11:29:47 +02:00
Lonami Exo
8d652c35a1
Add missing Photo/Document cases to get_input_media
2018-03-27 11:22:31 +02:00
Lonami Exo
ae2abd2ba9
Add __str__/.stringify() to tl.custom for completeness
2018-03-27 11:08:40 +02:00
Lonami Exo
1c9dc8dc63
Fix getting ID on custom Dialog class from dce0fd9
2018-03-24 18:44:13 +01:00
Lonami Exo
790b0d2d23
Guess entity type on positive IDs in events and avoid some RPCs
...
Now specifying a single positive integer ID will add all the types
to the white/blacklist so it can be "guessed". Explicit peers will
always be only that type, and an RPC is avoided (since it was not
needed to begin with).
2018-03-24 18:34:07 +01:00
Lonami Exo
13e59983af
Slightly change docs for events ( #668 )
2018-03-24 12:42:19 +01:00
Lonami Exo
898e550335
Except the right type for get_input_peer ( closes #722 )
2018-03-24 12:09:33 +01:00
Lonami Exo
43c6896481
Add a custom role for TL references and make use of it
2018-03-23 21:42:17 +01:00
Lonami Exo
c6d821910e
Mention that codes can expire immediately
2018-03-22 19:20:35 +01:00
Lonami Exo
021cb21686
Replace custom Box class with a single-item list for args by ref
2018-03-22 19:13:42 +01:00
Lonami Exo
33e908de42
Fix markdown regex not supporting [] inside URLs
2018-03-22 19:02:08 +01:00
Lonami Exo
dce0fd9e03
Add missing documentation for telethon.tl.custom and crosslinks
2018-03-22 19:02:08 +01:00
Jeff
95f368201e
Fix ChatAction not handling all pin events ( #715 )
2018-03-21 10:01:14 +01:00
Lonami Exo
f2407409b3
Fix send_file(force_document=True) for albums ( closes #713 )
2018-03-21 09:46:57 +01:00
Lonami Exo
3550974b71
Fix documentation for events
...
Changing the .__name__ of a class will make it not show in the
generated documentation, so instead we need to use a different
variable.
2018-03-21 09:17:56 +01:00
Lonami Exo
89ae0cb164
Make readthedocs build run without warnings
2018-03-21 08:55:13 +01:00
Lonami Exo
987cf41ec6
Higher timeout and log them as warning if any data was received
...
This might be the cause for "number of retries reached 0" so
more specific logging calls might be useful. If while reading
a response it times out but some data had already been read,
said data will be lost.
The sequence of events that triggered reaching 0 retries was:
- Sending requests with IDs XYZ
- socket.timeout while reading
- Items timed out. Retrying
- Processing RPC result
- Received response for XYZ
- Lost request with ID XYZ
2018-03-18 20:08:00 +01:00
Alex Root Junior
986ddbe600
Fix forwarding messages to channels ( #705 )
2018-03-18 17:23:10 +01:00
Lonami Exo
d379b26339
Fix assignement to wrong variable on ChatAction
2018-03-18 10:24:48 +01:00
Lonami Exo
7825994393
Update to v0.18.1
2018-03-17 17:38:46 +01:00
Lonami Exo
32fd64d655
Remove SQLAlchemy session
2018-03-17 17:38:16 +01:00
Lonami Exo
dc07d65075
Add remove_event_handler and list_event_handlers
2018-03-17 17:08:11 +01:00
Lonami Exo
36b09a9459
.download_file's file is not optional
2018-03-16 09:57:37 +01:00
Lonami Exo
d6c051fd52
Add __str__ and .stringify() to events
2018-03-16 09:54:16 +01:00
Lonami Exo
b20aa0ccc9
Stopping workers should not clear their count (may fix #686 )
2018-03-15 10:30:05 +01:00
Lonami Exo
1e3120b0b6
Bring back report_errors to the constructor
2018-03-15 10:22:21 +01:00
Lonami Exo
3b42bc9991
Slice albums larger than 10 items and allow mixing docs
2018-03-15 10:17:45 +01:00
Lonami Exo
d7ef0f5e09
Stop sending gifs as images
...
This is often not the case, most gifs are animated and when
sent as images inside albums they lose the animation.
2018-03-15 10:13:57 +01:00
Lonami Exo
45b7318f08
Fix Telegram only recognises 3 image filetypes
2018-03-15 09:52:45 +01:00
Lonami Exo
48869f0f4e
Fix MessageEdited ignoring NewMessage constructor arguments
...
These include outgoing/incoming and pattern which are now handled.
2018-03-14 21:09:51 +01:00
Lonami Exo
d5bc3c1a6c
Fix misleading documentation regarding report_errors
2018-03-14 21:05:50 +01:00
Lonami Exo
1ff5826c26
Call .get_dialogs only once on entity not found
2018-03-14 21:01:00 +01:00
Lonami Exo
8ae12fbb70
Return the entire entity from the helper events._get_entity too
2018-03-14 10:32:59 +01:00
Lonami Exo
7e9d19d727
Add known entities to all updates and use them in the events
...
This should reduce the amount of API calls made when getting the
full sender/chat on events (mostly on channels, where Telegram
seems to always send Updates instead only a normal Update).
2018-03-14 10:28:21 +01:00
Lonami Exo
fd309f0407
Add filter parameter to iter_participants and fix search for chats
2018-03-13 13:15:02 +01:00
Lonami Exo
a134336536
Fix ResolveUsernameRequest may return ChannelForbidden
2018-03-13 12:44:24 +01:00
Lonami Exo
751461f0f5
Modify iter_participants to also include .participant info
2018-03-12 10:33:51 +01:00
Lonami Exo
657c771fa0
Fix incorrect participant count on some channels
2018-03-12 09:52:16 +01:00
Lonami Exo
8b1cc4c8cb
Better handle pinned dialogs and limit on .get_dialogs()
2018-03-11 09:55:31 +01:00
Lonami Exo
a596f88497
Fix wrong super() args for events.MessageDeleted ( fix #675 )
2018-03-11 09:48:48 +01:00
Lonami Exo
055aa7fe43
Fix MessageService not handled on .delete_messages ( closes #681 )
2018-03-11 09:43:55 +01:00
Lonami Exo
70ef93a62e
Stop treating image/webp as images as Telegram throws error
2018-03-11 09:38:52 +01:00
Lonami Exo
e088fc3a4e
Add extra safety checks when getting peer ID
2018-03-10 12:13:17 +01:00
Lonami Exo
2fb42772c6
Add .video_note and .gif convenience properties to NewMessage
2018-03-08 20:21:56 +01:00
Lonami Exo
cf650e061e
Avoid editing events.NewMessage that are forwards
2018-03-08 20:18:10 +01:00
Lonami Exo
9d46bb35c8
Rename and reorder some params in Draft for consistency ( #673 )
2018-03-08 13:05:40 +01:00
Lonami Exo
8cefb22e14
Add .text and .raw_text properties to the Draft class ( #673 )
2018-03-08 12:56:20 +01:00
Lonami Exo
6e6d40be18
Implement Draft.send() ( closes #673 )
2018-03-08 12:37:06 +01:00
Lonami Exo
3d49f740df
Use the new client.iter_dialogs() in client.get_input_entity()
2018-03-08 11:48:59 +01:00
Lonami Exo
5673866553
Create client.iter_ versions for all client.get_ methods
...
While doing so, the client.iter_drafts method has been simplified
as it made some unnecessary calls.
client.get_message_history has been shortened to client.get_messages,
and fixes a bug where the limit being zero made it return a tuple.
client.iter_messages also uses a local dictionary for entities so
it should become less big in memory (and possibly faster).
client.get_participants would fail with user entities, returning
only their input version.
2018-03-08 11:44:13 +01:00
Lonami Exo
09f0f86f1e
Add convenience NewMessage attrs to get media of specific types
2018-03-08 10:30:49 +01:00
Lonami Exo
841aed13da
Fix tuple/ternary operator fail on SQLAlchemy session ( #671 )
2018-03-08 10:16:46 +01:00
Lonami Exo
3a3ae75b46
Fix-up bot API style IDs not working on .get_input_entity
2018-03-08 10:12:43 +01:00
Lonami Exo
0f34a9b333
Fix .get_input_entity error message always showing None
2018-03-08 10:08:26 +01:00
Lonami Exo
ce0dee63b1
Support getting any entity by just their positive ID
2018-03-08 10:05:40 +01:00
Lonami Exo
d3d190f36e
Fix-up previous commit overriding .action_message with None
2018-03-07 17:57:54 +01:00
Lonami Exo
801018fa9b
Add respond, reply and delete methods to events.ChatAction
...
Also introduces the new .action_message member.
2018-03-07 17:51:59 +01:00
Lonami Exo
dc99d119c3
Fix events.MessageDeleted always failing due to extra "self."
2018-03-07 17:31:21 +01:00
Lonami Exo
fca4904d0f
Add more logging calls when confirming a request
2018-03-07 11:30:03 +01:00
Lonami Exo
d0bdb7ea3f
Lower message severity when retrying invoke the first time
2018-03-07 11:13:55 +01:00
Lonami Exo
dd6802e032
Support PhotoSize in .download_media ( #669 )
...
This simplifies downloading thumbnails (and any other PhotoSize).
2018-03-07 11:45:37 +01:00
Lonami Exo
e3adec5ea9
Fix caption being None
...
This would later be an empty string with some modifications that
were removed upon upgrading to layer 75, which changed where the
captions are used and their naming.
2018-03-07 09:09:05 +01:00
Lonami Exo
7201482ebd
Support limit=0 on .get_participants to fetch count only
2018-03-06 12:24:37 +01:00
Lonami Exo
4f880dcd56
Replace BLOB with LargeBinary in sqlalchemy.py ( closes #670 )
2018-03-06 12:09:37 +01:00
Lonami Exo
fe627d1970
Update to v0.18
2018-03-04 12:03:09 +01:00
Lonami Exo
82c034dc56
Add forward_to on events.NewMessage
2018-03-04 00:32:26 +01:00
Lonami Exo
3a13f5f02f
Implement a forward_messages convenience method
2018-03-04 00:27:21 +01:00
Lonami Exo
363e751f48
Fix UserList not being considered a list
2018-03-04 00:23:13 +01:00
Lonami Exo
4de811b8cb
Expose the client on events as a public property
2018-03-03 23:55:35 +01:00
Lonami Exo
458d220af9
Fix users not being set for some events.ChatAction and properties
2018-03-03 23:41:27 +01:00
Lonami Exo
1c8bf44713
Add input user versions to events.ChatAction
2018-03-03 23:31:06 +01:00
Lonami Exo
c40a3ca77c
Split MessageChanged into MessageEdited and MessageDeleted
2018-03-03 23:23:14 +01:00
Lonami Exo
854c42b7ef
Add a file= parameter to client.send_message()
2018-03-03 23:12:05 +01:00
Lonami Exo
0f72aa8f94
Fix set union
2018-03-03 17:08:49 +01:00
Lonami Exo
96a1f580a4
Remove useless if condition on the memory session
2018-03-03 17:01:06 +01:00
Lonami Exo
81f8b7f76e
Add back _entity_values_to_row
2018-03-03 16:48:57 +01:00
Lonami Exo
57f50889b0
Fix non-aggressive get_participants and inverted condition
2018-03-03 15:12:48 +01:00
Lonami Exo
0e0e7f1c9e
Avoid unnecessary "or 0" in the session classes
2018-03-03 14:59:30 +01:00
Lonami Exo
6060b3430c
Fix sqlite session clone causing integrity error
...
Triggered on migrations, the dc id would be None.
2018-03-03 14:02:48 +01:00
Lonami Exo
67a782a6d7
Fix wrong peer type being used when not found in the session
2018-03-03 12:22:02 +01:00
Lonami Exo
a9c83250a1
Small clean-up of the session classes
2018-03-03 12:51:35 +01:00
Lonami Exo
1e420f7f91
Document the new abstract session better
2018-03-03 12:13:42 +01:00
Lonami
30f7a49263
Abstract Session class (merge #657 from tulir/sessions)
2018-03-03 11:33:47 +01:00
Lonami Exo
74bffd2ae3
Support multiple captions when sending albums
2018-03-02 21:33:49 +01:00
Lonami Exo
2e31a686e8
Upgrade to layer 75
...
Captions are now "messages" and also support message entities.
2018-03-02 21:28:33 +01:00
Tulir Asokan
290afd85fc
Fix AlchemySession session table updating
2018-03-02 21:58:16 +02:00
Tulir Asokan
47cdcda9e2
Move device info out of Session
2018-03-02 21:05:09 +02:00
Tulir Asokan
5e88b21aa9
Use single quotes
2018-03-02 20:42:51 +02:00
Tulir Asokan
f805914c80
Handle SQLAlchemy import errors
2018-03-02 20:40:03 +02:00
Tulir Asokan
c1a8896faa
Fix SQLAlchemy implementation
2018-03-02 20:14:11 +02:00
Tulir Asokan
dc2229fdba
Move salt and ID to base session and remove unused imports
2018-03-02 18:39:04 +02:00
Lonami Exo
a7f98fd3cc
Ignore bad file descriptor while closing
2018-03-02 17:26:42 +01:00
Tulir Asokan
e1d7cc541f
Add setters for non-persistent values that apps might change
2018-03-02 18:23:18 +02:00
Tulir Asokan
03d4ab3765
Fix create_engine check
2018-03-02 13:25:40 +02:00
Tulir Asokan
07c2fc50ec
Add SQLAlchemy-based session
2018-03-02 13:22:30 +02:00
Tulir Asokan
118d9b10e8
Add more abstraction
2018-03-02 13:20:11 +02:00
Tulir Asokan
d9a73744a4
Remove old sqlite session variables and clone code
2018-03-02 12:36:39 +02:00
Tulir Asokan
df3faaeb7f
Fix abstract Session method ordering
2018-03-02 11:11:59 +02:00
Lonami Exo
4c7224e56a
Fix n might be None when stopping workers
2018-03-02 10:10:59 +01:00
Tulir Asokan
4c64d53e71
Move non-persistent stuff to base Session class
2018-03-02 11:10:11 +02:00
Tulir Asokan
c5e6f7e265
Split Session into three parts and make a module for sessions
2018-03-01 23:40:28 +02:00
Lonami Exo
f09ab6c6b6
Fix-up 771c573
to properly stop background update workers
...
The "special" StopIteration object didn't actually make any sense.
Instead looping forever, workers now loop while there are workers,
so that they stop looping once the count is cleared.
Dummy values are still inserted so that they don't need to timeout
on the queue before exiting (these values are None) so in essence,
this keeps the best of both of worlds.
2018-03-01 20:13:21 +01:00
Lonami Exo
3a3f221bd1
Look in all dialogs when getting entities by peer ID
2018-03-01 20:03:51 +01:00
Lonami Exo
771c573db1
Better attempt at joining update worker threads
2018-03-01 13:31:39 +01:00
Joscha Götzer
835ff51e25
Multiple small changes/fixed typos to docs/error messages ( #623 )
2018-03-01 13:21:28 +01:00
Joscha Götzer
3184641549
Allow access to events' pattern match ( #654 )
2018-03-01 00:15:30 +01:00
Lonami Exo
3655df50dc
Postpone events resolution
2018-02-28 21:09:05 +01:00
Lonami Exo
3afd7dca84
Invoke multiple getParticipant's at the same time ( #580 )
2018-02-28 17:10:44 +01:00
Lonami Exo
057c6a0b12
Support getting more than 10k members on .get_participants()
...
Discussed on #580 , original PR made on #639 .
2018-02-28 13:24:44 +01:00
Lonami Exo
229cd78df0
Fix markdown's URL regex not acceping newlines
2018-02-27 14:10:02 +01:00
Lonami Exo
d5832e4f3b
Fix time offset failing if system time was ahead of time
...
While the offset was working, the last message ID was never reset,
so it would always pick an higher message ID (safety check), which
completely defeated the purpose of negative time offsets. Should
close #496 .
2018-02-27 11:43:42 +01:00
Joscha Götzer
0b662f3b04
Support stopping propagation of events ( #622 )
2018-02-27 11:30:42 +01:00
Lucas Yuji Suguinoshita Aciole
29f10f2771
Fix named arguments after kwargs ( #646 )
...
In Python3, you're unable to send named parameters after **kwargs
* Use single quotes
2018-02-27 10:05:27 +01:00
Lonami Exo
8d1b6629cb
Sending open()'ed files would make their name the entire path
2018-02-26 14:14:44 +01:00
Lonami Exo
5a54e2279f
Avoid relying on .__iter__ to tell iterators apart
...
.send_file() would fail with stream objects (those from open())
since they are iterable, and asserting that they weren't bytes
or str was not enough.
2018-02-26 14:12:21 +01:00
Lonami Exo
6f16aeb553
Add logging calls on the TcpClient
2018-02-26 13:41:07 +01:00
Lonami Exo
9604161c91
Fix incoming private messages not working with whitelists
...
For some reason this was only happening with bots and not
actual private messages. The fix doesn't seem to affect
previous behaviour with actual users in private messages.
2018-02-26 12:15:53 +01:00
Lonami Exo
3b0ab7794b
Get name attribute from streams instead always 'unnamed'
2018-02-25 20:35:55 +01:00
Lonami Exo
623c1bd7d1
Add missing parameters to TelegramClient.send_voice_note
2018-02-25 20:34:40 +01:00
Lonami Exo
098602ca13
Let events.Raw.resolve() be a no-op
2018-02-25 10:36:53 +01:00
Lonami Exo
cfc5ecfded
Fix tiny bug regarding .get_me(input_peer=True) crashing events
2018-02-25 10:35:39 +01:00
Lonami Exo
9ef75e5070
Allow specifying no event type to default to events.Raw
2018-02-24 18:25:22 +01:00
Lonami Exo
e5aecca79c
Update to v0.17.4
2018-02-24 18:08:14 +01:00
Lonami Exo
3301bf3ff6
Fix voice notes default filename being "None - None.oga"
2018-02-24 17:42:32 +01:00
Kyle2142
f9cec54c39
Add .get_participants() convenience method ( #639 )
...
Closes #363 and #380 .
2018-02-23 21:20:32 +01:00
Lonami Exo
a353679796
Fix downloading from another DC using wrong auth the first time
2018-02-23 13:13:39 +01:00
Lonami Exo
005a8f0a7f
Fix .send_file() not respecting MessageMedia captions
2018-02-23 12:10:07 +01:00
Lonami Exo
cda5e59e86
Make .send_message() accept another Message as input
2018-02-23 12:07:57 +01:00
Lonami Exo
448a04a7c5
Stop using InputPeerSelf() on events and special case edit()
...
Used to fail on the chat with your own (where messages are
"incoming" instead outgoing). Now the ID of the chat and
sender are compared to achieve the same effect. Fixes #632 .
2018-02-22 21:01:18 +01:00
Lonami Exo
f13a7e4afd
Allow getting the input peer for yourself and cache it
...
Warm-up for #632 , which needs this information accessible.
2018-02-22 20:37:56 +01:00
Lonami Exo
359cdcd772
Handle more parsing username cases ( closes #630 )
2018-02-22 10:27:12 +01:00
Lonami Exo
7f35ed59c6
Fix infinite recursion on .get_entity by exact name
2018-02-20 17:30:01 +01:00
Dmitry Bukhta
0731a1d698
Raise ProxyConnectionError instead looping forever ( #621 )
...
We shouldn't try reconnecting when using a proxy if what's
unavailable is the proxy server (and not Telegram servers).
2018-02-20 17:05:02 +01:00
Jannik
ea0da8fc0e
Add pattern argument on the NewMessage event ( #620 )
2018-02-20 15:55:02 +01:00
Lonami Exo
4050d1ca00
Support getting entities by exact name/title match
2018-02-19 21:05:39 +01:00
Lonami Exo
c31635cc34
Further validate the username on parse_username
2018-02-19 21:03:33 +01:00
Lonami Exo
39621ceae9
Use req_pq_multi instead req_pq when creating an auth_key
2018-02-19 20:31:47 +01:00
Lonami Exo
bf086f3e80
Fix UpdateDeleteMessages doesn't have .channel_id ( #619 )
2018-02-19 20:23:52 +01:00
Lonami Exo
1eeedc613b
Fix sending byte strings as files not working
2018-02-19 15:29:32 +01:00
Lonami Exo
b136074340
Update to v0.17.3
2018-02-19 15:29:02 +01:00
Lonami Exo
89df481ae4
Make MessageChanged.Event inherit NewMessage.Event
2018-02-18 14:07:13 +01:00
Lonami Exo
b93e1b5f50
Add add_event_handler and deprecate add_update_handler
2018-02-18 13:29:05 +01:00
Lonami Exo
1179c9e21b
Fix start not asking for password if needed
2018-02-18 12:17:02 +01:00
Lonami Exo
33fd6895d3
Use hachoir to determine audio and video metadata if possible
...
Closes #611
2018-02-17 13:01:12 +01:00
Lonami Exo
2bfe86cda1
Fix bot_token could not be specified alone on .start()
2018-02-17 12:32:30 +01:00
Lonami Exo
d581589313
Add missing UpdateShortChatMessage case on events.NewMessage
2018-02-17 11:40:38 +01:00
Lonami Exo
6d993af338
Move events chats and blacklist_chats into the base, reuse code
2018-02-17 11:29:16 +01:00
Lonami Exo
8718cf0e7e
Reuse turning chats into a set of IDs and handle self case
2018-02-17 10:41:43 +01:00
Lonami Exo
83d9d1d78e
Fix markdown parser not inverting delimiters dict
2018-02-16 20:30:19 +01:00
Lonami Exo
030f292203
Dump libssl bindings in favour of the new optional cryptg module
2018-02-16 18:24:44 +01:00
Lonami Exo
c11aefa95b
Fix message entities being ignored by edit_message
2018-02-16 13:42:12 +01:00
Lonami Exo
8194288797
Update to v0.17.2
2018-02-15 22:43:07 +01:00
Lonami Exo
75d99fbb53
Fix HTML entity parsing failing when needing surrogates
2018-02-15 11:52:46 +01:00
Lonami Exo
178643d3a1
Periodically send getState even without disconnect ( 341fb38
)
...
After some more tests, even if the server doesn't drop the
connection, it might also just stop sending updates at all.
2018-02-15 11:41:32 +01:00
Lonami Exo
196275e9c8
Add edit and delete shorthand methods to events.NewMessage
2018-02-15 11:35:12 +01:00
Lonami Exo
62c057a058
Add edit_message convenience method and refactor to accomodate it
2018-02-15 11:19:34 +01:00
Lonami Exo
80f918956a
Revert "official apps must be obfuscated" ( 29471f3
)
...
It didn't really make any sense and @danog keeps changing it.
2018-02-15 10:02:12 +01:00
Dmitry D. Chernov
55bcc29ae0
Errors: Fix passing 'self' to the constructors of the superclasses
...
This is necessary only if the superclass name is specified explicitly instead of super() call.
2018-02-14 17:09:22 +10:00
Lonami Exo
08b9d7c4ef
Add more logic to better retrieve input_sender on events
2018-02-13 10:24:35 +01:00
Lonami Exo
c83638ed0e
Add further logging calls to better spot lost requests
2018-02-12 13:40:00 +01:00
Lonami Exo
9abeefac7f
Send video files as video by default instead as document ( #601 )
2018-02-12 10:33:51 +01:00
Lonami Exo
0633e204c2
Fix whitelisting multiple chats on events not working
2018-02-11 10:30:45 +01:00
Lonami Exo
eca1e8ec87
Default to markdown parse mode on send_message
...
This is consistent with official clients and also provide
the expected result when replying to NewMessage events.
2018-02-10 10:45:55 +01:00
Lonami Exo
7d8d86c5f1
Support inline mentions (bot API style or username/phone)
2018-02-10 10:30:31 +01:00
Lonami Exo
6240677831
Fix sign up method not accepting integer codes
2018-02-09 19:39:20 +01:00
Lonami Exo
6261affaa1
Update to v0.17.1
2018-02-09 17:16:28 +01:00
Lonami Exo
14389a0ef2
Better document the events module
2018-02-09 15:56:42 +01:00
Lonami Exo
5167754368
Fix input_sender events' property not using cached value
2018-02-09 13:10:02 +01:00
Lonami Exo
f5eda72329
Add a new Raw Event
2018-02-09 13:08:09 +01:00
Lonami Exo
8786a52257
Add a new MessageChanged Event
2018-02-09 13:05:34 +01:00
Lonami Exo
ffe826b35f
Add a new UserUpdate Event
2018-02-09 12:45:40 +01:00
Lonami Exo
379c775558
Add a new ChatAction Event
2018-02-09 11:37:17 +01:00
Lonami Exo
510bbf0fc8
Create a more reusable Event base class
2018-02-09 11:36:41 +01:00
Lonami Exo
91ba50174a
Provide easier access to media through NewMessage event
2018-02-08 19:43:15 +01:00
Lonami Exo
c79fbe451f
Fix NewMessage event not dropping MessageService
2018-02-07 14:06:36 +01:00
Lonami Exo
2e0a8d6bce
Add respond and reply methods to the NewMessage event
2018-02-07 13:55:41 +01:00
Lonami Exo
dc43757cff
Don't access NewMessage properties when building the event
2018-02-07 13:55:25 +01:00
Lonami Exo
9c09233b4f
Make NewMessage's input chat/sender actual Input* if possible
2018-02-07 13:45:17 +01:00
Lonami Exo
ef837b1a53
Add a NewMessage event to handle incoming messages
2018-02-07 10:42:40 +01:00
Lonami Exo
5ec984dd82
Allow adding events with the client.on decorator
2018-02-07 10:41:58 +01:00
Lonami Exo
06bc761a5b
Update to v0.17
2018-02-03 16:03:17 +01:00
Lonami Exo
fd08d53253
Trust the server will not send duplicates
...
This change was also suggested by the test on the previous commit.
2018-02-03 15:42:43 +01:00
Lonami Exo
341fb38136
Invoke getState after the server kicks us idling for updates
...
For some reason, the server seems to kick us after 1024 items from
the network are received. Tested with the following code, 1022
updates were received, after BadServerSalt, NewSessionCreated and
MsgsAck:
client = TelegramClient(..., spawn_read_thread=False)
client.connect(_sync_updates=False)
sender = client._sender
client = None
while True:
try:
sender.receive(None)
except TimeoutError:
pass
except ConnectionResetError:
sender.connect()
If one were to run this code after being kicked no further items
will be retrieved and it will always timeout. Invoking a ping has
no effect either. Invoking some "high level" request like getState
seems to do the trick.
2018-02-03 15:39:37 +01:00
Lonami Exo
eefd37c2d7
Stop calling .disconnect() from .__del__()
...
It was causing some strange behaviour with the synchronized Queue
used by the UpdateState class. Calling .get() with any timeout
would block forever. Perhaps something else got released when
the script ended and then any call would block forever, thus the
thread never joining.
2018-02-03 12:15:38 +01:00
Lonami Exo
2ffe2b71dc
Except OSError with errno.WSAEACCES when connecting
...
"OSError: [WinError 10013] An attempt was made to access a
socket in a way forbidden by its access permissions."
2018-02-03 11:44:05 +01:00
Lonami Exo
cf21808118
Raise error on .get_entity() on non-joined invite link
2018-02-02 17:24:12 +01:00
Lonami Exo
fbd53e2126
Override TLObject's __eq__ and __ne__ methods
2018-02-01 12:10:03 +01:00
Lonami Exo
add122bfe7
Support signing up through .start()
2018-02-01 10:12:57 +01:00
Lonami Exo
d5a91c7273
Don't set session to None on .log_out()
2018-02-01 09:39:41 +01:00
Birger Jarl
c8bbbe3e3c
Save session data when migrating from JSON ( #570 )
2018-01-31 21:01:53 +01:00
Lonami Exo
bf56d32118
Add missing FutureSalts response special case ( #81 )
2018-01-30 18:32:42 +01:00
Lonami Exo
700b4c3169
Fix-up #565 with some rewording/behaviour changes
...
Such as not waiting unless strictly needed and better wording.
2018-01-27 21:37:57 +01:00
Matteo
067006d248
Add batch_size and wait_time to get_message_history ( #565 )
2018-01-27 21:29:38 +01:00
frizzlywitch
3b8365f871
Remove square braces from IPv6 addresses ( #561 )
2018-01-26 14:38:13 +01:00
Lonami Exo
43a3f40527
Properly close the sqlite3 connection ( #560 )
2018-01-26 09:59:49 +01:00
Lonami Exo
5c2dfc17a8
Make timeout logging message debug to scare people less
2018-01-25 18:44:21 +01:00
Lonami Exo
4a83784fe8
Simplify TLObject.pretty_format since Telegram returns no dicts
2018-01-25 09:51:12 +01:00
Lonami Exo
2873dcf1c6
Add '_' key to TLObject's .to_dict() and remove recursive param
...
Closes #559
2018-01-25 09:44:07 +01:00
Lonami Exo
db698858e0
Except TypeNotFoundError on ._invoke()
2018-01-23 22:26:19 +01:00
Lonami Exo
6c73538bd4
Fix time_offset not being used at all after BadMsgNotification
...
Telegram would refuse to reply any further unless the message ID
had the correct time (causing some behaviour like .connect()
never connecting, due to the first request being sent always
failing). The fix was to use time_offset when calculating the
message ID, while this was right, it wasn't in use.
2018-01-23 11:39:43 +01:00
Lonami Exo
32b92b32a7
Update .send_file() documentation (for f0eb41b
)
2018-01-23 12:13:03 +01:00
Lonami Exo
58d90e7e34
Fix .download_media() not accepting Document
2018-01-23 12:10:23 +01:00
Lonami Exo
81c95b5a60
Fix recursive .get_input_media() forgetting parameters
2018-01-23 12:04:35 +01:00
Lonami Exo
f0eb41b902
Accept message/media on .send_file, remove redundancy off README
2018-01-23 11:59:35 +01:00
Tulir Asokan
5f2f04c6c2
Add HTML parse mode ( #554 )
2018-01-22 10:06:11 +01:00
Lonami Exo
abe26625e6
Add missing ResolvedPeer, InputNotifyPeer, TopPeer cases
2018-01-21 11:04:46 +01:00
Lonami Exo
f1371c3999
Early return from Session.get_input_entity() if Input* given
2018-01-20 19:39:48 +01:00
Lonami Exo
86816a3bdf
Add missing InputChannel case on .get_input_peer()
2018-01-20 19:29:05 +01:00
Lonami Exo
b716c4fe67
Several documentation enhancements and build warnings fixes
...
- Made the documentation even more friendly towards newbies.
- Eased the usage of methods like get history which now set
a default empty message for message actions and vice versa.
- Fixed some docstring documentations too.
- Updated the old normal docs/ to link back and forth RTD.
- Fixed the version of the documentation, now auto-loaded.
2018-01-20 11:47:17 +01:00
Lonami Exo
4d4e81e609
Fix cyclic imports on Python 3.4 by moving Session one level up
2018-01-19 22:55:28 +01:00
Lonami Exo
519c113b58
Update to v0.16.2
2018-01-19 21:17:57 +01:00
Lonami Exo
e3c56b0d98
Reduce autocast overhead as much as possible
...
Rationale: if the user is doing things right, the penalty for
being friendly (i.e. autocasting to the right version, like
User -> InputPeerUser), should be as little as possible.
Removing the redundant type() call to access .SUBCLASS_OF_ID
and assuming the user provided a TLObject (through excepting
whenever the attribute is not available) is x2 and x4 times
faster respectively.
Of course, this is a micro-optimization, but I still consider
it's good to benefit users doing things right or avoiding
redundant calls.
2018-01-19 13:00:17 +01:00
Lonami Exo
33e50aaee1
Reuse .on_response/.__str__/.stringify, override iff necessary
2018-01-19 12:12:52 +01:00
Lonami Exo
f6d98a61cf
Add stub .get_input_entity() to TelegramBareClient
...
.resolve() calls should now work even if the subclass isn't in use.
2018-01-19 11:52:44 +01:00
Lonami Exo
1c9fa76ede
Add new method to .resolve() parameters instead on init
...
TLObject's __init__ used to call utils.get_input_* methods and
similar to auto-cast things like User into InputPeerUser as
required. Now there's a custom .resolve() method for this purpose
with several advantages:
- Old behaviour still works, autocasts work like usual.
- A request can be constructed and later modified, before the
autocast only occured on the constructor but now while invoking.
- This allows us to not only use the utils module but also the
client, so it's even possible to use usernames or phone numbers
for things that require an InputPeer. This actually assumes
the TelegramClient subclass is being used and not the bare version
which would fail when calling .get_input_peer().
2018-01-19 11:47:45 +01:00
Lonami Exo
b546c02210
Return a custom class for sized InputFile instead extra attrs
2018-01-18 20:09:59 +01:00
Lonami Exo
0e4611a593
Properly implement InputPhoto/InputDocument caching
...
Since uploading a file is done on the TelegramClient, and the
InputFiles are only valid for a short period of time, it only
makes sense to cache the sent media instead (which should not
expire). The problem is the MD5 is only needed when uploading
the file.
The solution is to allow this method to check for the wanted
cache, and if available, return an instance of that, so to
preserve the flexibility of both options (always InputFile,
or the cached InputPhoto/InputDocument) instead reuploading.
2018-01-18 19:36:47 +01:00
Lonami Exo
7e707dbbd9
Fix using enum on sqlite instead its value
2018-01-18 19:35:46 +01:00
Lonami Exo
1a3feec481
Move upload/download file methods to the TelegramClient
2018-01-18 13:55:03 +01:00
Lonami Exo
55efb2b104
Use a different schema for file cache which actually persists
...
Caching the inputFile values would not persist accross several
days so the cache was nearly unnecessary. Saving the id/hash of
the actual inputMedia sent is a much better/persistent idea.
2018-01-18 09:52:39 +01:00
Lonami Exo
428abebed8
Fix sending albums failing on invalid cache
2018-01-17 13:29:08 +01:00
Lonami Exo
bfe9378054
Fix .send_file failing with strings (as they are iterable)
2018-01-17 13:28:56 +01:00
Lonami Exo
fde0d60f72
Update old interactive example ( #546 )
2018-01-16 18:36:50 +01:00
Lonami Exo
49f204c955
Fix .get_input_media using None caption and missing venue type
2018-01-16 14:04:12 +01:00
Lonami Exo
36e2101910
Allow sending multiple files as album ( closes #455 )
2018-01-15 18:15:30 +01:00
Lonami Exo
494c90af69
Fix uploaded files cache may have expired
2018-01-15 12:36:46 +01:00
Lonami Exo
00859d52c3
Ask for the phone on start only if required
2018-01-15 09:48:37 +01:00
Lonami Exo
8be7e76b74
Use the idling state instead checking if read thread is present
...
This caused some multithreading bugs, for instance, when there was
no read thread and the main thread was idling, and there were some
update workers. Several threads would try to read from the socket
at the same time (since there's no lock for reading), causing
reads to be corrupted and receiving "invalid packet lengths"
from the network. Closes #538 .
2018-01-14 21:20:22 +01:00
Lonami Exo
c5e969d585
Add more useful logging on invalid packet length received
2018-01-13 19:26:45 +01:00
Lonami Exo
0d429f55c5
Fix asking for phone on .start()
2018-01-13 12:00:53 +01:00
Lonami Exo
77301378f8
Make .start() more friendly by asking phone if not given
...
Ping #530
2018-01-13 11:55:12 +01:00
Lonami Exo
1fd20ace2c
Update to v0.16.1
2018-01-11 22:18:58 +01:00
Lonami Exo
77ef659cbf
Clearer error when invoking without calling .connect() ( #532 )
2018-01-11 15:42:27 +01:00
Joscha Götzer
80f81fe69a
Added .start() convenience method to quickly connect/authorize ( #528 )
2018-01-11 12:43:46 +01:00
Lonami Exo
eaef392a9b
Add and except missing FLOOD_TEST_PHONE_WAIT_X error
2018-01-10 17:34:34 +01:00
Lonami Exo
8038971753
Add clear_mentions parameter to .send_read_acknowledge()
2018-01-10 12:50:49 +01:00
Lonami Exo
045f7f5643
Assert hash is not None when migrating from JSON sessions
2018-01-10 10:46:43 +01:00
Lonami Exo
01820c9943
Associate phone code hash with phone (so phone can change)
2018-01-08 14:18:36 +01:00
Lonami Exo
c12af5e412
Remove references to the wiki
2018-01-08 14:04:04 +01:00
Nikola Vlahović
0c3216cb36
Fix channel check issue on send_read_acknowledge ( #526 )
2018-01-08 12:46:47 +01:00
Lonami Exo
46b088d44c
Also handle ECONNREFUSED on .connect() (report on #392 )
2018-01-08 12:26:32 +01:00
Lonami Exo
3c686fecdf
Avoid more cyclic imports on the session file
2018-01-08 12:14:03 +01:00
Lonami Exo
f4182376f1
Move utils.calc_msg_key into auth_key (cyclic imports py3.4)
2018-01-08 12:07:14 +01:00
Lonami Exo
59a1a6aef2
Stop working with bytes on the markdown parser
2018-01-07 16:19:41 +01:00
Lonami Exo
34fe150096
Save only one auth_key on the database again
2018-01-07 00:38:30 +01:00
Lonami Exo
d81dd055e6
Remove temporary connections and use a lock again
...
These seem to be the reason for missing some updates (#237 )
2018-01-06 23:45:22 +01:00
Lonami Exo
7745b8e7ee
Use without rowid only if supported ( closes #523 )
2018-01-06 19:35:24 +01:00
Lonami Exo
f357d00911
Assert user/channel ID is non-zero too for #392
2018-01-06 15:54:27 +01:00
Lonami Exo
6f690945f1
Add a few security checks when unpacking messages from server
...
Also delete MtProto 1.0 leftovers.
2018-01-06 02:03:23 +01:00
Lonami Exo
3eafe18d0b
Implement MtProto 2.0 ( closes #484 , thanks @delivrance!)
...
Huge shoutout to @delivrance's pyrogram, specially this commit:
pyrogram/pyrogram/commit/42f9a2d6994baaf9ecad590d1ff4d175a8c56454
2018-01-06 01:55:11 +01:00
Lonami Exo
4871a6fb96
Accept 'me' and 'self' usernames to get self user entity
2018-01-05 19:51:44 +01:00
Lonami Exo
ec4ca5dbfc
More consistent with asyncio branch (style/small fixes)
...
Like passing an extra (invalid) dt parameter when serializing
a datetime, and handling more errors in the TcpClient class.
2018-01-05 18:31:48 +01:00
Lonami Exo
c4e26c95f5
Always cache files smaller than 10MB, now in the database
...
This removes the need for a .clear_cache() method as now files
are identified by their MD5 (which needs to be calculated
always) and their file size (to make collisions even more
unlikely) instead using the file path (which can now change).
2018-01-05 15:33:25 +01:00
Lonami Exo
a489b4b18b
Clean up some more twirks on RTD and update docstrings
2018-01-05 13:30:21 +01:00
Lonami Exo
6cb5931e7a
Call .disconnect() on client.__del__ for convenience
2018-01-04 23:37:47 +01:00
Lonami Exo
b45b63d71d
Assert ._first_request is True with None auth_key ( #517 )
2018-01-04 21:07:29 +01:00
Lonami Exo
4fba27dee9
Accept InputFile/InputFileBig on .upload_file for 2c437c51
...
Now an input file thumbnail can also be specified, instead
needing to reupload the file every time.
2018-01-04 15:33:48 +01:00
Csaba Henk
2c437c51bb
client: add thumbnail support for send_file()
2018-01-04 12:17:47 +01:00
Csaba Henk
78871b697e
client: return the message in send_file, too
2018-01-04 12:17:47 +01:00
Lonami Exo
33d6afa0bd
Add missing L74 hash parameter to .get_message_history()
2018-01-03 19:18:24 +01:00
Lonami Exo
cbf6306599
Fix early cast to input from 932ed9e
causing error on Peer
2017-12-29 22:07:16 +01:00
Lonami Exo
d2121c76cb
Fetch and persist each auth_key per DC
2017-12-29 19:41:12 +01:00
Lonami Exo
0570c55120
Remove hardcoded database version from session sql statement
2017-12-29 00:43:52 +01:00
Lonami Exo
47b53ce89f
Except only UnicodeDecodeError to check migration ( fix #511 )
2017-12-28 17:06:14 +01:00
Lonami Exo
4a139b0ae4
Fix session table may be empty if no DC switch
2017-12-28 14:58:42 +01:00
Lonami Exo
50d413b1c9
Fix slicing dialogs was turning UserList into list
2017-12-28 14:55:02 +01:00
Lonami Exo
55b67b65a1
Remove optional add_mark parameter from .get_peer_id
...
It was always True after all, and it made no sense for it to
be False.
2017-12-28 13:31:43 +01:00
Lonami Exo
7ed3be8e6f
Fix .get_dialogs() failing due to IDs being marked
...
Also removed utils.find_user_or_chat to prevent this from
happening again. Using a dict {marked_id: entity} is better.
2017-12-28 13:21:35 +01:00
Lonami Exo
c23c0a557a
Update to v0.16
2017-12-28 12:43:50 +01:00
Lonami Exo
3537e9bcc9
Support more types to represent a date
2017-12-28 12:32:16 +01:00
Lonami Exo
75a342e24b
Fix .download_media() not handling Photo ( closes #473 )
2017-12-28 12:11:31 +01:00
Lonami Exo
bfff1567af
Fix up some mismatching raise/except types since 6ec6967
2017-12-28 11:55:05 +01:00
Lonami Exo
459022bdab
Return a UserList with a .total attribute for get dialogs/history
2017-12-28 11:49:35 +01:00
Lonami Exo
0755bda220
Stop returning tuples off .get_message_history()
...
Now the information is saved in the modified Message instances,
which makes it easier to use (message.sender, message.to...)
2017-12-28 02:01:22 +01:00
Lonami Exo
52a4ef82f4
Merge branch 'master' of github.com:LonamiWebs/Telethon
2017-12-28 01:17:30 +01:00
Lonami Exo
b35fc075e0
Merge branch 'sqlite-session'
2017-12-28 01:15:12 +01:00
Lonami Exo
2a10f31511
Always wrap init connection for first call
...
Ping @delivrance.
See https://core.telegram.org/api/invoking#saving-client-info .
2017-12-28 01:13:24 +01:00
Lonami Exo
ab07f0220a
Save dc_id instead layer and salt in the session file
...
Server salts change every 30 minutes after all, so keeping them
in the long-term storage session file doesn't make much sense.
Saving the layer doesn't make sense either, as it was only used
to know whether to init connection or not, but it should be done
always.
2017-12-28 01:06:27 +01:00
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
Dmitry D. Chernov
b252468ca2
TelegramBareClient: Add set_proxy() method
...
This allows to change proxy without recreation of the client instance.
2017-12-28 09:48:01 +10:00
Lonami Exo
b1b3610c1f
Add missing self to .set_proxy ( fa64a5f
)
2017-12-28 00:09:29 +01: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
Dmitry D. Chernov
fa64a5f7b8
TelegramBareClient: Add set_proxy() method
...
This allows to change proxy without recreation of the client instance.
2017-12-28 07:50:49 +10:00
Dmitry D. Chernov
a5b1457eee
TelegramBareClient: Fix lost #region
2017-12-28 07:33:25 +10: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
f29ee41f6c
Don't use rowid for the entities table
2017-12-27 13:27:54 +01:00
Lonami Exo
932ed9ea9d
Cast to input peer early on get input entity and close cursor
2017-12-27 13:06:03 +01:00
Lonami Exo
843e777eba
Simplify .process_entities() flow
2017-12-27 12:58:50 +01:00
Lonami Exo
f8745155ac
Stop joining read thread on disconnect, as it may be None
2017-12-27 12:37:07 +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
b6b47d175c
Fix username.lower() on instances with username field but None
2017-12-27 12:16:49 +01:00
Lonami Exo
5c17097d8d
Clean up .get_entity and remove force_fetch
2017-12-27 11:56:05 +01:00
Lonami Exo
86429e7291
Lowercase usernames before adding them to the database
2017-12-27 11:54:08 +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
0a4849b150
Small cleanup of the Session class
2017-12-26 16:59:30 +01:00
Lonami Exo
664417b409
Use sqlite3 instead JSON for the session files
2017-12-26 16:45:47 +01:00
Tanuj
c218df87d7
Remove reference to README.rst ( #504 )
2017-12-25 17:26:29 +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
Dmitry D. Chernov
4a2a64ce2f
TcpClient: Catch ConnectionError instead of its particular cases
...
That can be more reliable, especially in the case of using PySocks.
2017-12-23 05:45:23 +10:00
Lonami Exo
992017ddf8
Except ConnectionAbortedError on TcpClient
2017-12-22 11:27:57 +01:00
Lonami Exo
23ab70fc29
Remove unused request_msg_id from the TLObject class
2017-12-20 17:48:41 +01:00
Lonami Exo
c848ae0ace
Move tgread_object() outside specific msg processing calls
2017-12-20 17:45:40 +01:00
Lonami Exo
5842d3741b
Make a proper use of the logging module
2017-12-20 12:47:39 +01:00
Lonami Exo
7d189119f4
Fix salt migration failing with valid signed salts
2017-12-20 12:47:39 +01:00
Lonami Exo
0e0bc6ecbc
Fix session ID is also signed since d4d7aa9
2017-12-07 12:22:40 +01:00
Lonami Exo
1d19bb22a5
Don't ignore NewSessionCreated salt
2017-12-04 20:34:35 +01:00
Lonami Exo
d4d7aa9063
Use signed salt
2017-12-03 21:10:22 +01:00
Lonami Exo
6662f49bcb
Remove another redundant if
2017-11-30 21:10:02 +01:00
Lonami Exo
21a93d58ec
Use a synchronized queue instead event/deque pair
2017-11-30 21:09:34 +01:00
Lonami Exo
7d7b2cb1fa
Remove redundant checks from UpdateState
2017-11-30 20:40:35 +01:00
Lonami Exo
9046b46fcd
Document the network/ module
2017-11-30 13:21:01 +01:00
Lonami Exo
605c103f29
Add unparse markdown method
2017-11-26 17:16:59 +01:00
Lonami Exo
57a70d0d47
Document the extensions/ module
2017-11-26 17:14:28 +01:00
Lonami Exo
71eb542626
Document the errors/ module
2017-11-26 17:06:09 +01:00
Lonami Exo
a932fb6470
Document the crypto/ module
2017-11-26 16:57:40 +01:00
Lonami Exo
74ec6391d9
Fix-up security assertion ( b42b4bb
for #453 )
2017-11-24 19:05:52 +01:00
Maxim Smirnov
b42b4bb326
Add OpenSSL assertion on authenticator.py ( #453 )
...
aes_ige.c(88): OpenSSL internal error, assertion failed
2017-11-24 18:47:36 +01:00
Dmitry D. Chernov
5a4d6d4a57
tlobject: Represent timestamp as 'int' instead of 'float'
2017-11-23 22:39:35 +10:00
Dmitry D. Chernov
f99d14558f
binary_reader: Parse TL 'date' to UTC datetime instead of local
2017-11-23 02:06:43 +10:00
Lonami Exo
152856dfbc
Add a force_fetch parameter to .get_entity
2017-11-20 10:58:11 +01:00
Lonami Exo
9767774147
Fix import in markdown parser not being relative
2017-11-17 15:57:48 +01:00
Lonami Exo
01f55200f2
Update to v0.15.5
2017-11-16 19:18:26 +01:00
Lonami Exo
346c5bb303
Add method to md parser to extract text surrounded by entities
2017-11-16 19:13:13 +01:00
Lonami Exo
e5deaf5db8
Fix c4e07cf
, md parsing adding unfinished entity at wrong offset
2017-11-16 19:07:53 +01:00
Lonami Exo
4ddbc78699
Ensure IPv6 addresses are surrounded by '[]' ( #425 )
2017-11-16 13:47:15 +01:00
Lonami Exo
edd73ed69a
Allow switching from IPv4 to IPv6 and vice versa
2017-11-16 13:40:25 +01:00
Vladislav Kolesnichenko
ee5915e86d
Add support for connecting through IPv6 ( #425 for #112 )
2017-11-16 13:30:18 +01:00
Lonami Exo
959e824c1c
Reduce indent level to simplify flow on __call__
2017-11-16 13:26:49 +01:00
Lonami Exo
778c844a64
Use logger.exception instead logger.error on ReadThread
2017-11-16 13:25:13 +01:00
Lonami Exo
b346561f89
Remove unnecessary call to .get_input_entity()
2017-11-16 13:24:32 +01:00
Lonami
48e96ca15f
Fix ._get_connected failing when .fileno() == 0 ( #427 )
2017-11-14 12:01:33 +01:00
Lonami Exo
bfc408b00a
Use NullHandler as default for the library
2017-11-13 10:59:43 +01:00
Lonami Exo
4ac88a1505
Use ._logger.exception when .connect fails ( #373 )
2017-11-13 10:58:10 +01:00
Lonami Exo
07cb001854
Attempt at cleaning up reconnection logic
2017-11-13 10:31:32 +01:00
Lonami Exo
f3e2887452
Add missing ChannelFull case to .get_peer_id()
2017-11-12 18:15:32 +01:00
Lonami Exo
08abef78d6
Add missing InputUserSelf case to .get_input_peer()
2017-11-12 18:05:01 +01:00
Andrey Egorov
84d48ef7bf
Safer check to determine whether sockets are connected ( #427 )
2017-11-12 16:51:32 +01:00
Lonami Exo
99512875a2
Reconnect if invoking failed ( #270 )
2017-11-12 16:25:56 +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
c4e07cff57
Fix unfinished markdown delimiters being stripped away
2017-11-10 11:44:27 +01:00
Lonami Exo
cb3f20db65
Clean up markdown parsing since tuples aren't used anymore
2017-11-10 11:41:49 +01:00
Lonami Exo
7d75eebdab
Make markdown parser use only Telegram's MessageEntity's
2017-11-10 11:07:36 +01:00
Lonami Exo
cad1e883a6
Don't save full entities unless they have access_hash
2017-11-10 09:32:40 +01:00
Lonami Exo
f65322af18
Fix entity database not using the phone on {phone: id}
...
Closes #412
2017-11-07 10:15:55 +01:00
Lonami Exo
83af705cc8
Add more comments to the markdown parser
2017-11-06 11:32:40 +01:00
Lonami Exo
3a2c3a9497
Fix URL regex for markdown was greedy (fix-up)
2017-11-06 11:22:58 +01:00
Lonami Exo
07ece83aba
Fix overlapping markdown entities being skipped
2017-11-06 10:37:22 +01:00
Lonami Exo
4f80429215
Work on byte level when parsing markdown
...
Reasoning: instead encoding every character one by one as we
encounter them to use half their length as the correct offset,
we can simply encode the whole string at once as utf-16le and
work with that directly.
2017-11-06 10:29:32 +01:00
Viktor Oreshkin
49eb281251
Proper offset calculation for markdown ( #407 )
...
Dan suca
If Dan shared it with Traitor I'll not have to spend my time on this
Not a, sorry for not letting you sleep
k thx bye
Will this stay in history?
2017-11-06 00:17:22 +01:00
Lonami Exo
f381b26790
Add optional force_sms parameter to .send_code_request()
2017-11-04 20:46:02 +01:00
Lonami Exo
c8a0953f8e
Update to v0.15.4
2017-11-04 13:40:56 +01:00
Lonami Exo
1741608f28
Use larger batches for .get_dialogs(limit=None)
2017-11-04 12:35:12 +01:00
Dan
0bfd8ff032
Add much faster integer factorization ( #403 related to #199 )
2017-11-03 12:59:17 +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
82cac4836c
Fix markdown URL parsing using character index instead offset
2017-10-30 11:15:53 +01:00
Lonami Exo
0a14aa1bc6
Remove additional check when calculating emojies length
...
This special check treated some emojies as 3 characters long but
this shouldn't have actually been done, likely due to the old
regex matching more things as emoji than it should (which would
have count as 2 too, making up for 1+3 from the new is_emoji()).
2017-10-30 10:56:39 +01:00
Lonami Exo
05f7f076d5
Fix InputPeer* with None hash, drop them off database ( closes #354 )
2017-10-30 10:33:45 +01:00
Lonami Exo
05626c8274
Implement missing .to_dict() and .stringify() on message/container
2017-10-29 20:13:36 +01:00
Lonami Exo
6567f4b567
Clean .download_contact and a wrong indent level
2017-10-29 20:13:36 +01:00
Lonami Exo
2609bd9bd1
Use constants and allow empty URL regex when parsing markdown
2017-10-29 18:21:21 +01:00
Lonami Exo
d47a9f83d0
Fix some special cases which are not treated as emojis (offset 1)
2017-10-29 17:07:37 +01:00
Lonami Exo
bcaa8007a3
Fix inline URL matching swallowing all parse entities
2017-10-29 16:43:30 +01:00
Lonami Exo
f5fafc6a27
Enhance emoji detection
2017-10-29 16:41:30 +01:00
Lonami Exo
368269cb11
Add ability to parse inline URLs
2017-10-29 16:33:10 +01:00
Lonami Exo
9600a9ea0b
Fix markdown parsing failing if delimiter was last character
2017-10-28 19:17:18 +02:00
Lonami Exo
5adec2e1ab
Initial attempt at parsing Markdown-like syntax
2017-10-28 19:06:41 +02:00
Andrei Fokau
ef794bf75d
Fix importing dependencies during installing ( #384 )
2017-10-28 12:21:07 +02: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
c6d30ffceb
Fix exception when logging exceptions
2017-10-25 13:06:51 +02:00
Lonami Exo
3db13ccdd2
Add a more descriptive error when serializing bytes
2017-10-25 12:43:57 +02:00
Lonami Exo
ceb37cd4c5
Move auth_key generation and InitConnection logic to .invoke()
...
The reasoning behind this is that .connect() should not call
any request at all, it should only connect to the servers
although it currently still calls GetStateRequest.
There were some issues (#291 , #360 ) where the auth_key was None
(possibly due to .connect() returning False), so this may
fix some of the cases where it returned False. This way we also
ensure that we always have an auth_key, or even if it "breaks"
(it's not the right key for the server anymore).
A few additional changes have been introduced to accommodate
this, such as moving InitConnection logic too or importing auths.
2017-10-24 15:40:51 +02:00
Lonami Exo
d58c729af0
Add missing InputPeerSelf case to .get_input_user
2017-10-24 09:43:59 +02:00
Lonami Exo
b04eed82eb
Add new .idle() method to listen for updates from MainThread
2017-10-22 13:16:34 +02:00
Andrey Egorov
8057cea294
Fix resending requests on bad salt/msg notification ( #369 )
...
These responses from the server could indicate container IDs,
which weren't being saved. This fix also accounts for that case.
2017-10-22 13:13:49 +02:00
Lonami Exo
5de8350d85
Reorder another import for #357
2017-10-22 11:23:15 +02:00
Lonami Exo
6759beac21
Add __str__ methods to TLMessage and MessageContainer
2017-10-21 20:23:53 +02:00
Lonami Exo
d7f917ebfc
Update docstrings
2017-10-21 16:59:20 +02:00
Lonami Exo
7596f2b797
Fix and enhance "no workers set" warning
2017-10-21 13:48:57 +02:00
Lonami Exo
5cdf92e509
Update to v0.15.3
2017-10-20 23:33:08 +02:00
Lonami Exo
d70811b693
Fix infinite loop when invoking on update handlers ( fix #336 )
...
Every update that hadn't been acknowledged on the main connection
yet would be resent on any new connection. These new connections
are made temporary when invoking anything from any thread that's
not the main thread. It would also process all the updates, hence,
Telegram would be resending these not-acknowledged updates to the
temporary connection, and the updates would be processed again,
then the update handler would react to the duplicated updates over
and over.
To fix this, simply don't process updates on the temporary thread
at all. With this reasoning, if we don't acknowledge updates on
the temporary connections, Telegram will resend them on the main
connection, so we should not lose any.
2017-10-20 23:30:02 +02:00
Lonami Exo
2782a08ed0
Add note for future self when handling gzip packed data
2017-10-20 22:44:00 +02:00
Lonami Exo
1a91c024fc
Revert 63dfb1e
as many updates were being dropped
2017-10-20 22:12:03 +02:00
Lonami Exo
033119e9b8
Make MtProtoSender._need_confirmation a set
...
This will avoid adding duplicated items to it
2017-10-20 22:07:45 +02:00
Lonami Exo
38ccd6d1d9
Generate errors from PWRTelegram's API
2017-10-20 17:20:05 +02:00
Andrey Egorov
f37b9ed20e
Fix new salt not being saved to session file ( #362 )
2017-10-20 16:48:54 +02:00
Andrey Egorov
050cd95d32
Remove unnecessary .disconnect() from ._invoke() ( #356 )
2017-10-19 10:51:34 +02:00
Andrey Egorov
e349910eb9
Fix attribute access order being swapped ( #353 )
2017-10-18 15:34:04 +02:00
Andrey Egorov
16cf94c9ad
Fix ._clear_all_pending failing due to a wrong call ( #352 )
2017-10-18 14:47:03 +02:00
Lonami Exo
87dc476dae
Fix ReadThread not starting on reconnect if already authorized
2017-10-18 14:45:08 +02:00
Lonami Exo
5a1074dc7c
Avoid calling .sync_updates when not needed
2017-10-18 12:17:13 +02:00
Lonami Exo
adb79b21cf
Replace .to_bytes() with the special .__bytes__ function
2017-10-17 19:54:59 +02:00
Lonami Exo
63dfb1e3ea
Fix processing messages pending of acknowledge many times
2017-10-17 10:15:13 +02:00
Andrey Egorov
ed77ba6f8f
Likely fix .log_out crashing "calling Event" ( #349 )
2017-10-17 00:39:04 +02:00
Lonami Exo
27728be242
Revert "Attempt at not calling .connect for every file chunk"
...
This reverts commit 280a700655
.
The reason for this is that it was causing a lot of files to
be downloaded corrupted for some reason. This should be
revisited to avoid creating a new connection for every chunk.
2017-10-15 11:05:56 +02:00
Lonami Exo
d92e8e11ad
Update to v0.15.2
2017-10-14 12:05:28 +02:00
Lonami Exo
280a700655
Attempt at not calling .connect for every file chunk
2017-10-14 12:03:01 +02:00
Nikolay
9907d763a8
Use peer as key instead top_message on .get_dialogs ( fix #329 )
2017-10-14 11:50:48 +02:00
Lonami Exo
f4b8772a85
Temporary fix for abusive duplicated updates ( closes #336 )
2017-10-14 11:37:47 +02:00
Lonami Exo
4fd9d361f0
Replace redundant isinstance calls with a tuple parameter
2017-10-13 11:39:34 +02:00
88ee55
db63b5e39a
Fix .send_message not expecting UpdateNewChannelMessage ( #331 )
2017-10-13 10:53:36 +02:00
Lonami Exo
9cf5506ee4
Don't .disconnect() on FloodWaitError
...
Since other requests can still be invoked, it makes no
sense to call .disconnect().
2017-10-13 09:59:37 +02:00
Lonami Exo
bec5f9fb89
Add stub methods for more server responses
2017-10-12 21:09:09 +02:00
Lonami Exo
f2338e49ae
Allow using a callable key on EntityDatabase
2017-10-12 19:54:23 +02:00
Lonami Exo
16a0cecf46
Fix EntityDatabase.__delitem__
2017-10-12 19:47:13 +02:00
Lonami Exo
6242cc8159
Fix .tgread_object not seeking back on TypeNotFoundError
2017-10-12 18:52:04 +02:00
Lonami Exo
59c61cab2f
Replace int.from_bytes with struct.unpack for consistency
2017-10-12 18:41:58 +02:00
Lonami Exo
bff2e6981e
Fix ._pop_request_of_type failing on not-found requests
2017-10-12 18:03:10 +02:00
Lonami Exo
7bb7cb039f
Fix handle RpcResult not always returning a bool
2017-10-12 17:58:37 +02:00
Lonami Exo
0c1170ee61
Replace hardcoded reads with TLObject's .read()
2017-10-12 16:40:59 +02:00
Lonami Exo
3a4662c3bf
Remove forgotten print call from authenticator.py
2017-10-12 16:07:25 +02:00
Lonami Exo
301da16f29
Fix pong response not reading all data from the buffer
2017-10-11 21:09:09 +02:00
Lonami Exo
da51e71def
Fix .get_input_entity returning marked IDs ( closes #314 )
2017-10-09 19:40:39 +02:00
Lonami Exo
db623e37fd
Except ConnectionResetError on ._reconnect ( fix #309 )
2017-10-09 13:23:39 +02:00
Lonami Exo
e2ac18b7bc
Use larger chunks when downloading/uploading files
2017-10-09 13:19:03 +02:00
Lonami Exo
a7622324dd
Remove unnecessary offset_index variable on .download_file
2017-10-09 12:00:14 +02:00
Lonami Exo
6f1c05633e
Join all threads when calling .disconnect() ( fix #252 )
2017-10-09 11:47:10 +02:00
Lonami Exo
f984aae391
Except ProxyConnectionError on ReadThread ( fix #307 )
2017-10-09 11:37:08 +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
Lonami Exo
401de913af
Fix EntityDatabase failing with InputPeer keys
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
1f54cbfb5a
Make str(TLObject) return valid code to generate it back
2017-10-08 17:51:29 +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
15e90dcb69
Allow specifying a threshold to handle flood waits
2017-10-08 16:15:30 +02:00
Lonami Exo
83677fc927
Enhance and use .get_input_photo on the generated code
2017-10-08 13:45:14 +02:00
Lonami Exo
62aec947c0
Chang auto-reconnect condition ( fix #303 )
2017-10-08 10:52:56 +02:00
Lonami Exo
244a47cddd
Fix consuming all retries on Requests returning False/empty list
2017-10-07 18:54:30 +02:00
Joscha Götzer
7b5d409c49
Warn users on .add_update_handler if no workers are running ( #300 )
2017-10-07 17:55:37 +02:00
Lonami Exo
91a5d20e93
Replace .on_response with static .from_reader for all types
2017-10-07 13:26:09 +02:00
Lonami Exo
a17def8026
Use basename instead abspath for filename attribute ( #294 )
2017-10-06 21:48:53 +02:00
Lonami Exo
6d877549cb
Cleanup utils.get_peer_id
2017-10-06 21:47:10 +02:00
Lonami Exo
3bf70692b4
Fix TelegramClient.get_input_entity always failing/missing return
2017-10-06 21:43:04 +02:00
Lonami Exo
79e36c98bd
Fix EntityDatabase.get_input_peer not actually working
2017-10-06 21:42: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
9d394ab18b
Send MsgsAck in the same container along with the requests
2017-10-06 11:36:39 +02:00
Lonami Exo
1d8a02685f
Update to v0.15.1
2017-10-05 13:58:26 +02:00
Lonami Exo
7aa21dbd07
Fix .get_dialogs to never return more than limit
2017-10-05 13:55:58 +02:00
Lonami
427a6aabaa
Merge pull request #296 from LonamiWebs/entity-db
...
Use a custom database for entities
2017-10-05 13:46:16 +02:00
Lonami Exo
dde196d8e4
Swallow errors when processing entities
...
Some bug was causing an infinite lock due to the entity
database failing with InputPeerSelf, since adding a full
entity to the database wasn't disallowing self, and so
wasn't utils get_peer_id. Although last commit fixed that,
just in case, swallow errors there.
2017-10-05 13:34:44 +02:00
Lonami Exo
1fb3d0d00c
Fix EntityDatabase failing to cache self user
2017-10-05 13:34:11 +02:00
Lonami Exo
4f2a44231a
Allow disabling the EntityDatabase fully or partially
2017-10-05 13:06:51 +02:00
Lonami Exo
99cc0778bb
Allow EntityDatabase to be accessed by phone
2017-10-05 13:01:00 +02:00
Lonami Exo
a8edacd34a
Fix get_peer_id going into infinite recursion for InputPeerSelf
2017-10-05 12:59:44 +02:00
Lonami Exo
16f929b8b6
Fix .get_peer_id not working with full entities
2017-10-05 12:33:24 +02:00
Lonami Exo
10eca82143
Fix process_entities not working on list of entities
2017-10-05 12:29:52 +02:00
Lonami Exo
d2e244817a
Make EntityDatabase.get a no-op if key is an entity already
2017-10-05 12:28:04 +02:00
Lonami Exo
e5c4df98df
Use EntityDatabase on TelegramClient.get_entity instead lru_cache
2017-10-05 12:27:32 +02:00
Lonami Exo
a0fc5ed54e
Use EntityDatabase in the Session class
2017-10-04 21:02:45 +02:00
Lonami Exo
a98dc9d95b
Try passing socks.GeneralProxyError to the main thread
2017-10-04 14:09:46 +02:00
Lonami Exo
5be9df0eec
Add a basic EntityDatabase class
2017-10-04 13:58:36 +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
d98fd6a424
Fix workers not stopping on .disconnect(), start them on login
2017-10-01 19:56:24 +02:00
Lonami Exo
62ea77cbea
Fix opposite condition on .get_dialogs
2017-10-01 19:45:42 +02:00
Lonami Exo
e717256937
Always use session ip address and port when connecting
2017-10-01 19:26:20 +02:00
Lonami Exo
269949595f
Allow phone as int on .sign_in ( #278 )
2017-10-01 19:02:53 +02:00
Lonami Exo
354ea1c0c8
Add ChannelPrivateError error
2017-10-01 18:53:12 +02:00
Lonami Exo
8c3a2470ed
Update to v0.15
2017-10-01 17:38:48 +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
1ded6d9d06
Expand Updates into Update objects before calling handlers
2017-10-01 16:30:27 +02:00
Lonami Exo
c61e168de4
Rename invoke to __call__
2017-10-01 16:04:14 +02:00
Lonami Exo
36dabc4928
Process entities from the MtProtoSender instead TelegramBareClient
...
This way, update objects will also be processed when they occur.
2017-10-01 16:02:29 +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
9bccd17881
Add an option to allow not saving/processing found entities
2017-10-01 13:32:27 +02:00
Lonami Exo
e4c5396c04
Add cross-thread safety when saving the session
2017-10-01 13:27:08 +02:00
Lonami Exo
a737f33324
Save all found entities to the session file
2017-10-01 13:27:08 +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
1d159908c7
Fix RPC excepts (e.g. UserMigrate) being in the wrong try
2017-10-01 11:25:56 +02:00
Lonami Exo
68e7d481f4
Add support to get all dialogs at once
2017-10-01 11:25:12 +02:00
Lonami Exo
a5ab49c707
Remove sleep on ServerError as per @danog's recommendation
2017-09-30 19:02:12 +02:00
Lonami Exo
33dbac6350
Add some missing BadRequest errors
2017-09-30 19:00:32 +02:00
Lonami Exo
c9dff552b8
Except ServerErrors and sleep a bit before retrying
2017-09-30 18:51:25 +02:00
Lonami Exo
76e5206acc
Raise ValueError if an unknown **kwarg is given
2017-09-30 18:45:56 +02:00
Lonami Exo
f1bca0fd06
Fix setting None update workers not causing all threads to stop
2017-09-30 18:44:37 +02:00
Lonami Exo
8c3c990e74
Remove UpdateState .set and .check error
2017-09-30 18:39:31 +02:00
Lonami Exo
933ae01d85
Change condition to perform automatic reconnection
2017-09-30 18:33:34 +02:00
Lonami Exo
b6bc9ac39b
Rename ._connect_lock to ._reconnect_lock
2017-09-30 18:25:09 +02:00
Lonami Exo
671ac1cdb7
Fix **kwargs not being passed to TelegramBareClient
2017-09-30 18:02:08 +02:00
Lonami Exo
4cd7e1711e
Rename cdn parameter to _cdn
2017-09-30 17:57:39 +02:00
Lonami Exo
d28f370ab6
Add ._get_cdn_client as alternative ._get_exported_client version
2017-09-30 17:51:07 +02:00
Lonami Exo
a35c4b15db
Cache exported Sessions instead whole clients
2017-09-30 16:32:10 +02:00
Lonami Exo
c1c6df9fd0
Fix invoke not raising ValueError when retries reach 0
2017-09-30 16:18:16 +02:00
Lonami Exo
8ecd2c2e06
Call .sync_updates on .connect iff exported_auth is None
...
Calling this method on exported clients would trigger a
UserMigrateError because it was being used on a non-native
data center. For .connects like this, don't attempt syncing
updates.
2017-09-30 16:11:16 +02:00
Lonami Exo
18e485ded2
Set default TelegramBareClient behaviour to not spawn ReadThread
2017-09-30 15:53:47 +02:00
Lonami Exo
0a567fcd7c
Make creating a new sender cleaner
2017-09-30 12:08:06 +02:00
Lonami Exo
5da300ca84
Make MtProtoSender not thread-safe
...
Rationale: a new connection should be spawned if one desires to
send and receive requests in parallel, which would otherwise cause
one of either threads to lock.
2017-09-30 11:50:11 +02:00
Lonami Exo
003e231239
Attempt at cleaning up TelegramBareClient.invoke()
2017-09-30 11:45:35 +02:00
Lonami Exo
61033b2f56
Allow disabling spawning a second thread
2017-09-30 11:28:15 +02:00
Lonami Exo
a3ae56ca9e
Use a timeout when worker threads are polling
2017-09-30 11:21:07 +02:00
Lonami Exo
7cef5885fa
Rename process_updates/polling to workers
2017-09-30 11:17:31 +02:00
Lonami Exo
72b7e99222
Ensure the worker threads have updates once they acquire the lock
2017-09-30 10:59:33 +02:00
Lonami Exo
9560bcc324
Remove "if background thread" check as it isn't exposed anymore
2017-09-30 10:27:46 +02:00
Lonami Exo
b87a798dd5
Spawn new worker threads to handle updates instead using ReadThread
2017-09-30 10:27:46 +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
ee08232473
Fix UpdateState.check_error popping the wrong side
2017-09-30 10:27:16 +02:00
Lonami Exo
6df38da793
Fix session failing to load if no auth_key present
2017-09-29 19:54:40 +02:00
Lonami Exo
56103845de
Fix LogOutRequest consuming all retries ( #270 )
2017-09-29 13:58:15 +02:00
Lonami Exo
61e5c73658
Update to v0.14.2
2017-09-29 13:13:05 +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
b3f04fd359
Raise AssertionError instead TypeNotFoundError on authenticator
2017-09-29 13:07:21 +02:00
Lonami Exo
3c7dd25982
Revert "if * is None" check ( 8bff10d
) on get_input_* due to 423efc4
2017-09-29 12:02:26 +02:00
Lonami Exo
dc5bbc1719
Update to v0.14.1
2017-09-28 12:02:47 +02:00
Lonami Exo
cc337328c6
Rename handmade Message class to TLMessage to avoid confusion
2017-09-28 11:59:24 +02:00
Lonami Exo
71c2a82b3d
Completely remove BinaryWriter from the project
2017-09-28 11:49:45 +02:00
Lonami Exo
2fd03e5422
Stop using BinaryWriter on MtProtoPlainSender
2017-09-28 11:43:06 +02:00
Lonami Exo
fe30f63d5d
Use autogen code on the authenticator instead hardcoding requests
2017-09-28 11:36:51 +02:00
Lonami Exo
fb0898b9cb
Don't distinguish between str and bytes when serializing
...
This makes it easier to use some requests like ReqPqRequest which
needs a string of bytes, not a valid utf-8 string per se.
2017-09-28 09:55:29 +02:00
Lonami Exo
1518be0b95
Use .appendleft(x) for deque instead .insert(0, x) ( fix #268 )
2017-09-28 09:30:47 +02:00
Lonami Exo
c667a00281
Avoid using BinaryWriter where possible
2017-09-27 21:23:59 +02:00
Lonami Exo
8a605f21e6
Remove BinaryWriter dependency on MessageContainer
2017-09-27 21:06:01 +02:00
Lonami Exo
833aeb86eb
Fix auth_key is unsigned
2017-09-27 21:04:52 +02:00
Lonami Exo
bd3dd371a2
Create a proper Message class (msg_id, seqno, body; only .to_bytes())
2017-09-27 21:01:20 +02:00
Lonami Exo
b0839a028e
Update to v0.14
2017-09-27 13:51:59 +02:00
Lonami Exo
795cb98909
Move MessageContainer.on_send inside its .to_bytes
2017-09-27 13:49:58 +02:00
Lonami Exo
6df9fc558e
Create and use a new GzipPacked class, also when sending
2017-09-27 13:46:53 +02:00
Lonami Exo
7b736aa6ef
Fix MessageContainer having the wrong constructor id
2017-09-27 13:46:02 +02:00
Lonami Exo
efca981312
Fix adding a request twice (or container) to ._pending_receive
2017-09-27 13:26:35 +02:00
Lonami Exo
0c11967232
Remove unused .shaes attribute from CdnDecrypter
2017-09-27 12:11:16 +02:00
Lonami Exo
657e8a70c9
Fix CdnDecrypter incorrectly accessing clients' timeout ( closes #265 )
2017-09-27 12:08:37 +02:00
Lonami Exo
98c2e1dd4f
Replace 4 .append calls with a single one when serializing bytes
2017-09-26 14:41:11 +02:00
Lonami Exo
b83cd98ba0
Replace TLObject.on_send with the new .to_bytes()
...
This also replaces some int.to_bytes() calls with a faster
struct.pack (up to x4 faster). This approach is also around
x3 faster than creating a BinaryWriter just to serialize a
TLObject as bytes.
2017-09-26 14:36:02 +02:00
Lonami Exo
f233110732
Allow sending several requests at once through new MessageContainer
2017-09-25 20:52:27 +02:00
Lonami Exo
1d50bba8bc
Add get_input_* methods for Media and such
2017-09-25 13:43:03 +02:00
Lonami Exo
edcd23f94c
Making timeout when reporting an error shorter
2017-09-25 12:00:09 +02:00
Lonami Exo
493f5cec1f
Fix-up target method typo
2017-09-25 11:57:42 +02:00
Lonami Exo
01c91bb895
Report errors in the background not to interfer with users ( #262 )
2017-09-25 11:56:44 +02:00
Lonami Exo
c0ee123156
Add a small sleep when trying to reconnect forever
2017-09-25 11:04:09 +02:00
Lonami Exo
0f10e1419f
Update to v0.13.6
2017-09-23 11:44:04 +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
80e9877256
Show the type of children TLObjects on .stringify()
2017-09-23 11:01:25 +02:00
Andrey Egorov
73fbfde7ef
Process messages without pts
2017-09-22 23:14:31 +02:00
Lonami Exo
f39f9c33a0
Fix timeout on confirm_received.wait not being added ( fix #257 )
2017-09-22 19:20:37 +02:00
Lonami Exo
9ce4307304
Update to v0.13.5
2017-09-22 16:12:43 +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
9dfb5d493c
Fix BrokenPipeError was instance of OSError
2017-09-22 13:51:11 +02:00
Lonami Exo
4a8e5c865a
Detect BrokenAuthKeyError on MtProtoSender._decode_msg
2017-09-22 13:32:00 +02:00
Lonami Exo
a992f42781
Attempt at fixing socket is None on .connect()
2017-09-22 13:14:56 +02:00
Lonami Exo
6d60e83adc
Start background thread only if it was None
2017-09-22 13:13:41 +02:00
Lonami Exo
d8bf8bb2eb
Fix reconnect always returning False -> infinite loop
2017-09-22 12:48:04 +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
ffadcd029f
Save the session much less often (doable because 151e162
)
2017-09-21 19:12:46 +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
4ba12e717f
Fix reconnect to new_dc wasn't changing connection.ip
2017-09-21 13:58:57 +02:00
Lonami Exo
7f83a6109f
Fix authenticator was disconnecting when it shouldn't
2017-09-21 13:54:44 +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
4777b8dad4
Handle .connect() method more gracefully
2017-09-21 13:44:22 +02:00
Sergey
446174c7de
Catching WinError 10038
...
While client.connect() there were OSError: [WinError 10038] an operation was attempted on something that is not a socket
2017-09-21 13:37:13 +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
1d3273a306
Fix UpdateState calling handlers with updates with lower pts
2017-09-19 13:17:40 +02:00
Lonami Exo
e12e82357d
Update to v0.13.4
2017-09-18 13:32:16 +02:00
Lonami Exo
91f44613a8
Fix SendMessageRequest could return UpdateShortSentMessage
2017-09-18 11:59:55 +02:00
Lonami Exo
200d1d67be
Make BufferError message more useful
2017-09-18 11:45:08 +02:00
Lonami Exo
0235fce99c
Don't hold ._updates_lock while calling .handlers
2017-09-18 11:01:15 +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
2a3e5e5ed2
Handle BufferError's more gracefully
2017-09-17 19:39:41 +02:00
Lonami Exo
78155a21bd
Retry authentication for auth keys up to five times by default
2017-09-17 19:15:43 +02:00
Lonami Exo
e7a936222f
Catch -404 BrokenAuthKeyError on .connect()'s .do_authentication
2017-09-17 18:38:03 +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
58fe39f060
Expose MtProtoSender.is_connected() and use it on .connect()
2017-09-17 16:39:29 +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
12c12fdfaf
Fix representing .stringify() for bytes with indent > 0
2017-09-17 16:35:35 +02:00
Lonami Exo
76b7420b63
Ignore TimeoutError when invoking a request
2017-09-17 16:32:51 +02:00
Lonami Exo
2f0f6d4591
Remove initial_query leftovers
2017-09-17 16:20:04 +02:00
Lonami Exo
aea10b103b
Rename generated layer variable to uppercase readonly property
2017-09-17 16:17:55 +02:00
Lonami Exo
c84e54b647
Get rid of the initial_query= parameter on .connect()
2017-09-17 16:06:43 +02:00
Lonami Exo
2689b0750d
Make DC options static
...
Some datacenters don't allow calling GetConfigRequest,
this way it can both be reused and such calls omitted.
2017-09-17 15:19:21 +02:00
Lonami Exo
59a4315c28
Avoid calling InitConnectionRequest when it's not needed
2017-09-17 14:26:25 +02:00
Lonami Exo
29471f3bba
Force obfuscated2 mode if api_id < 20
2017-09-15 11:49:39 +02:00
Lonami Exo
279eb110be
Update to v0.13.3
2017-09-14 11:51:41 +02:00
Lonami Exo
12a39873f1
Workaround msg_seqno too low/high ( closes #95 )
2017-09-14 11:50:38 +02:00
Lonami Exo
151e1623d3
Stop saving the session ID, sequence and time offset
...
After some discussion, storing the session ID is not needed at all.
It can always start off as a new random 8-byte-long number, also
restarting the sequence number at 0. This should prevent some seqno
too low errors.
Also, saving the time offset could cause more trouble than fixing
them, so that has also been removed.
2017-09-14 11:44:42 +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
d79dccc923
Add a lock around TcpClient.close() to try avoiding None.close()
2017-09-13 09:44:58 +02:00
Lonami Exo
1d36bbfbf4
Remove forgotten invalid code CdnDecrypter.finish_check ( fix #243 )
2017-09-12 15:38:00 +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
a2fdd4b196
Ignore InvalidChecksumError's
2017-09-11 11:04:19 +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
bce88446ef
Fix incorrect condition causing updates to be ignored
2017-09-08 18:43:37 +02:00
Lonami Exo
54ba0661c6
Fix wrong variable name causing .connect() to fail
2017-09-08 18:28:31 +02:00
Lonami Exo
fa4042a80e
Update to v0.13.2
2017-09-08 13:22:05 +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
Birger Jarl
edf325d580
Fix username regex ( #235 )
...
Username max length is 1+31 = 32
2017-09-07 09:41:49 +02:00
xkdnyan
cd40f4a949
Add RPCError for MESSAGE_NOT_MODIFIED ( #231 )
2017-09-05 17:06:35 +02:00
Lonami Exo
49555ad018
Stick to the offset and limit CdnFileHashes dictates ( #222 )
...
The old intersection method and allowing an arbitrary part size
wasn't working properly. Assuming that Telegram will send a sha
sum for the whole file, in the correct order, we can simply use
their offsets to download the file.
2017-09-05 16:43:53 +02:00
Lonami Exo
2924912931
Fix CDN downloads not always calling GetCdnConfigRequest ( #222 )
...
On previous tests, Telegram didn't return information about CDNs
on the initial GetConfigRequest. However, it may do so, and it's
necessary to call GetCdnConfigRequest even when a second call to
GetConfigRequest isn't required.
2017-09-05 16:11:02 +02:00
Lonami Exo
d5cd59de8a
Update to v0.13.1
2017-09-04 20:34:05 +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
7f700c3bc1
Remove unused attributes and methods from the base TLObject class
2017-09-04 16:39:16 +02:00
Lonami Exo
dc238df2e0
Update to v0.13
2017-09-04 12:18:45 +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
62a52679f4
Ensure the state of the requests is clean before invoking them
2017-09-03 13:45:13 +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
626778bd32
Ignore EBADF when closing the socket
2017-09-03 13:44:29 +02:00
Lonami Exo
68cdc9eaf1
Treat OSError.errno == EBADF as a ConnectionResetError
2017-09-03 11:54:26 +02:00
Lonami Exo
f8f389c850
Fix ack requests removing pending requests when they shouldn't
2017-09-03 11:21:42 +02:00
Lonami Exo
db6fd4bdc2
Fix RPC errors being ignored due to modifying the wrong attribute
2017-09-03 11:19:28 +02:00
Lonami Exo
83f3f66113
Fix MtProtoSender never clearing self._pending_receive requests
2017-09-03 10:50:55 +02:00
Lonami Exo
fa34c4bb77
Handle ConnectionResetError on background thread (removed on 9bc1f64
)
2017-09-03 10:05:18 +02:00
Lonami Exo
2a5d08b23d
Turn socket.timeout error into the more general TimeoutError
2017-09-03 10:01:00 +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
863d2e8368
Make confirm_received a flag, avoid race conditions, fix bg RPCError
...
There was a race condition between TelegramBareClient.invoke
receiving part and MtProtoSender._handle_rpc_result actually
reading the result after setting request.confirmed = True.
The .confirmed is now a threading.Event to avoid the sleep(0.1).
RPC errors have been moved inside the request so they're not
raised on a background thread anymore.
2017-09-02 20:41:00 +02:00
Lonami Exo
b908296efa
Remove unused TcpClien.read(timeout=...) param, change other accessors
2017-09-02 19:33:42 +02:00
Lonami Exo
36f51e1e3f
Remove ability to TcpClient.cancel_read()
...
This simplifies the process of sending and receiving data,
and makes use of Python's socket.settimeout instead a hand-crafted
version with a sort-of arbitrary self.delay = 0.1 (seconds), which
should improve the speed of the method
2017-09-02 19:14:11 +02:00
Lonami Exo
cc280a129d
Remove TcpClient.write/read shared locks
...
Since they were shared between write and read, and now the read
is done constantly on a separate thread, the read lock would
cause the write method to be locked and not functional at all
2017-09-02 18:49:29 +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
8bff10d956
Fix get_input_* not skipping None entities ( #215 )
...
This was an issue when parsing optional parameters, since None
could not be specified, resulting in a strange crash.
2017-08-30 11:12:25 +02:00
Lonami Exo
b4811261e9
Set a known buffer size if possible on BinaryWriter()s
2017-08-29 20:44:51 +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
82304b18eb
Attempt at supporting IPv6 ( #211 and #112 )
2017-08-29 13:49:41 +02:00
Lonami Exo
592e107f52
Recreate the TCP socket only when needed
2017-08-29 13:35:56 +02:00
Lonami Exo
cff7655a10
Add support for TCP intermediate mode ( #112 )
2017-08-29 11:39:44 +02:00
Lonami Exo
a3c2c462a7
Add support for tcp_obfuscated on the Connection class ( #112 )
2017-08-28 21:44:02 +02:00
Lonami Exo
fa22a3f848
Create a centralized Connection class, replaces TcpTransport ( #112 )
2017-08-28 21:23:31 +02:00
Lonami Exo
bc72e52834
Reuse the AESModeCTR class on CdnDecrypter
2017-08-28 20:30:33 +02:00
Lonami Exo
5404670469
Implement and use TCP obfuscated as a PoC ( #112 )
...
Credits to MadelineProto/Connection.php by @danog
2017-08-28 20:25:44 +02:00
Lonami Exo
adfebfc82c
Remove ThreadTcpClient test (committed by mistake)
2017-08-28 17:46:31 +02:00
Lonami Exo
2c6377e069
Update to v0.12.2
2017-08-28 17:29:08 +02:00
Lonami Exo
06b2d5d786
Fix CDN client not being disconnected
2017-08-28 16:33:23 +02:00
Lonami Exo
8afcd0b91f
Turn HashChecker into CdnDecrypter to abstract CDN-specific aspects
2017-08-28 16:25:10 +02:00
Lonami Exo
b504ce14bc
Verify the files downloaded from CDNs and raise on sha256 mismatch
2017-08-28 14:17:31 +02:00
Lonami Exo
00b5b5021b
Report errors to pwrtelegram.xyz by default
2017-08-25 15:34:20 +02:00
Lonami Exo
2517b9787d
TLObject.stringify() was showing bytes as lists
2017-08-24 20:56:08 +02:00
Lonami Exo
2e55998d7f
Update to v0.12.1
2017-08-24 19:09:37 +02:00
Lonami Exo
98bbcb6cd6
Favour rsa module over PyCrypto since the former is pure Python
2017-08-24 18:41:48 +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
4384ccb132
Tidy up TelegramBareClient.download_file CDN's mess
2017-08-24 18:00:47 +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
e5e7715a31
Decrypt files downloaded from CDNs ( closes #208 )
2017-08-24 15:50:44 +02:00
Lonami Exo
940a2896e8
Part size when downloading files is now 4096 bytes, not 1024
2017-08-24 13:15:33 +02:00
Lonami Exo
09272ef6fc
Support connecting and downloading encrypted files from CDNs ( #208 )
2017-08-24 13:02:48 +02:00
Lonami Exo
d5fd147881
Add a few more default RSA public keys from Telegram
2017-08-23 21:50:33 +02:00
Lonami Exo
66876b6722
Use pycrypto's RSA instead the old weird RSA implementation
2017-08-23 21:49:27 +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
571d8bc21f
Update to v0.12
2017-08-23 01:47:52 +02:00
Lonami Exo
c0bae1d608
Replace type(...) == ... with isinstance() checks
2017-08-23 01:45:49 +02:00
Lonami Exo
65d5ab685f
Let .upload_file() support streams and byte arrays
2017-08-23 01:43:08 +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
fb5c43b539
Ensure .connect() always returns True/False
2017-08-22 23:17:05 +02:00
Lonami Exo
1a6231472e
Ensure the connection is flagged as closed on errors, move #201
2017-08-22 23:12:32 +02:00
Lonami Exo
88ec9c297e
Improve libssl.py's file formatting
2017-08-22 23:05:07 +02:00
Lonami Exo
274e16ac66
Avoid defining Python's AES class if libssl's is available
2017-08-22 23:05:07 +02:00
Tural
12b84c929a
Fix log_out problems on macOS devices
2017-08-21 09:00:23 +02:00
Christian Stemmle
ffb1cf483d
Faster crypto by using libssl ( closes #199 )
2017-08-20 01:21:11 +02:00
Lonami Exo
afcddfd7c1
Remove seemingly useless array copies on aes.py ( #199 )
2017-08-17 18:12:19 +02:00
Lonami Exo
9f812d83a9
Use sympy for faster factorization if available ( #199 )
2017-08-17 17:37:27 +02:00
Lonami Exo
7e85a3cda4
Attempt at making get_new_msg_id thread-safe ( #195 )
2017-08-14 15:17:16 +02:00
MeytiGHG
1794acdfec
Check for isinstance(x, JsonSession) instead crashing during transition
2017-08-07 00:54:23 +02:00
Lonami Exo
83c346ccc5
Let InputPeerChannel be casted automatically into InputChannel
2017-08-05 09:37:34 +02:00
Lonami Exo
7844cd358e
Attempt at making layer migrations more smooth ( #158 )
2017-07-26 16:10:45 +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
3be995b5a3
Update to v0.11.5
2017-07-11 11:38:17 +02:00
Lonami Exo
5ded836437
Update to v0.11.4
2017-07-10 16:13:45 +02:00
Lonami Exo
88c4cdfb52
Make get_input_* methods slightly smarter
2017-07-10 16:11:06 +02:00
Lonami Exo
bdee94eaf3
Implement automatic cast to InputUser too ( closes #159 )
2017-07-10 16:04:10 +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
95a989be2c
Automatically cast Channel to InputChannel (similar to InputPeer)
2017-07-07 09:48:06 +02:00
Lonami Exo
f88efa7f49
Let PeerChat be casted to InputPeerChat automatically
2017-07-04 21:18:35 +02:00
Lonami Exo
8fd0d7eadd
Add a new .stringify() function to visualize TLObjects more easily
2017-07-04 21:15:47 +02:00
Lonami Exo
632fcb7c00
Ensure device model is non-empty ( closes #154 )
2017-07-04 19:47:55 +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
83c8e98448
Ensure that message ids are signed once again
2017-06-27 18:45:52 +02:00
Lonami Exo
0cfbf63eaf
Fix ConnectionResetError not flagging the socket as disconnected
2017-06-27 10:18:35 +02:00
Lonami Exo
b0173c3ec2
Use more accurate values for msg_ids
2017-06-26 11:01:20 +02:00
Lonami Exo
a5ce375358
Update to v0.11.1 and fix setup.py
2017-06-24 18:16:10 +02:00
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