Lonami Exo
8b16023566
Allow setting a per-client default parse mode
2018-06-03 11:29:48 +02:00
Lonami Exo
f7222407de
Document custom.Message
2018-06-02 12:52:38 +02:00
Lonami Exo
6dcd0911a7
Move events.NewMessage properties to custom.Message
2018-06-02 12:30:25 +02:00
Lonami Exo
e2ce55871e
Replace custom.Message's class on creation
2018-06-01 21:20:34 +02:00
Lonami Exo
9db9d1ed5c
Implement __bytes__ and use count instead sum
2018-05-31 22:39:32 +02:00
Lonami Exo
2191fbf30b
Fix custom.Message.click not having buttons
2018-05-31 14:10:19 +02:00
Lonami Exo
a1c511429e
Port NewMessage.edit/delete to custom.Message
2018-05-31 14:01:42 +02:00
Lonami Exo
66d5443fcd
Add custom.Message.fwd_from_entity
2018-05-31 13:56:33 +02:00
Lonami Exo
58f621ba82
Make custom.Message more consistent with previous patches
2018-05-31 13:50:08 +02:00
Lonami Exo
5aed494aac
Fix custom.Message special methods
2018-05-31 12:50:08 +02:00
Lonami Exo
192b7af136
Lazily load user/input user on Message
2018-05-31 12:24:25 +02:00
Lonami Exo
aa70436441
Add a custom Message class
2018-05-31 10:32:32 +02:00
Lonami Exo
68bb8e8b91
Add is_user/group/channel and title to Dialog
2018-05-30 19:20:27 +02:00
Lonami Exo
ef509d13c7
Move InvokeAfterMsg to TLMessage to cleanly confirm results
2018-05-09 16:18:42 +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
vegeta1k95
3bf259d6b3
Make TLObjects picklable ( #752 )
2018-04-12 18:02:46 +02:00
Lonami Exo
395e702586
Make py:obj default Sphinx's role
2018-03-28 16:03:47 +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
43c6896481
Add a custom role for TL references and make use of it
2018-03-23 21:42:17 +01:00
Lonami Exo
dce0fd9e03
Add missing documentation for telethon.tl.custom and crosslinks
2018-03-22 19:02:08 +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
Joscha Götzer
835ff51e25
Multiple small changes/fixed typos to docs/error messages ( #623 )
2018-03-01 13:21:28 +01:00
Lonami Exo
fbd53e2126
Override TLObject's __eq__ and __ne__ methods
2018-02-01 12:10:03 +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
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
33e50aaee1
Reuse .on_response/.__str__/.stringify, override iff necessary
2018-01-19 12:12:52 +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
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
494c90af69
Fix uploaded files cache may have expired
2018-01-15 12:36:46 +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
3c686fecdf
Avoid more cyclic imports on the session file
2018-01-08 12:14:03 +01:00
Lonami Exo
34fe150096
Save only one auth_key on the database again
2018-01-07 00:38:30 +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
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
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
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
3537e9bcc9
Support more types to represent a date
2017-12-28 12:32:16 +01:00
Lonami Exo
52a4ef82f4
Merge branch 'master' of github.com:LonamiWebs/Telethon
2017-12-28 01:17:30 +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
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
b6b47d175c
Fix username.lower() on instances with username field but None
2017-12-27 12:16:49 +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
Lonami Exo
238198db5a
Create a convenient class to wrap Dialog instances
2017-12-24 16:18:09 +01:00
Lonami Exo
23ab70fc29
Remove unused request_msg_id from the TLObject class
2017-12-20 17:48:41 +01:00
Lonami Exo
7d189119f4
Fix salt migration failing with valid signed salts
2017-12-20 12:47:39 +01:00
Lonami Exo
d4d7aa9063
Use signed salt
2017-12-03 21:10:22 +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
Vladislav Kolesnichenko
ee5915e86d
Add support for connecting through IPv6 ( #425 for #112 )
2017-11-16 13:30:18 +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
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
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
3db13ccdd2
Add a more descriptive error when serializing bytes
2017-10-25 12:43:57 +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
adb79b21cf
Replace .to_bytes() with the special .__bytes__ function
2017-10-17 19:54:59 +02:00
Lonami Exo
4fd9d361f0
Replace redundant isinstance calls with a tuple parameter
2017-10-13 11:39:34 +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
0c1170ee61
Replace hardcoded reads with TLObject's .read()
2017-10-12 16:40:59 +02:00
Lonami Exo
da51e71def
Fix .get_input_entity returning marked IDs ( closes #314 )
2017-10-09 19:40:39 +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
15e90dcb69
Allow specifying a threshold to handle flood waits
2017-10-08 16:15:30 +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
79e36c98bd
Fix EntityDatabase.get_input_peer not actually working
2017-10-06 21:42:04 +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
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
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
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
6df38da793
Fix session failing to load if no auth_key present
2017-09-29 19:54:40 +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
cc337328c6
Rename handmade Message class to TLMessage to avoid confusion
2017-09-28 11:59:24 +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
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
bd3dd371a2
Create a proper Message class (msg_id, seqno, body; only .to_bytes())
2017-09-27 21:01:20 +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
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
80e9877256
Show the type of children TLObjects on .stringify()
2017-09-23 11:01:25 +02:00
Lonami Exo
12c12fdfaf
Fix representing .stringify() for bytes with indent > 0
2017-09-17 16:35:35 +02:00
Lonami Exo
59a4315c28
Avoid calling InitConnectionRequest when it's not needed
2017-09-17 14:26:25 +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
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
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
22673aec0e
Replace the old Session+pickle with JsonSession (name change)
2017-08-29 15:59:08 +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
7e85a3cda4
Attempt at making get_new_msg_id thread-safe ( #195 )
2017-08-14 15:17:16 +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
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
23e2802215
Update to layer 68
2017-06-30 11:48:45 +02:00
Lonami Exo
b0173c3ec2
Use more accurate values for msg_ids
2017-06-26 11:01:20 +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
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 Exo
96d8ca94cf
Move TelegramClient.list_sessions to *Session.list_session
2017-06-14 13:57:30 +02:00
Lonami Exo
a73be04da7
Move connection parameters to the session
2017-06-10 13:15:04 +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
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
cf6f300df1
Improve .is_user_authorized() and add a .get_me() method
2017-06-04 17:24:08 +02:00
Lonami Exo
7f84374e98
Attempt at fixing msg_id too low/high ( #95 )
2017-05-26 16:39:59 +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
Fadi Hadzh
d087941bd0
Many code-style improvements
2016-11-30 00:29:42 +03: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