Commit Graph

2359 Commits

Author SHA1 Message Date
Devesh Pal
7778e54467
Allow restricting channels (#3679) 2022-01-24 21:09:51 +01:00
Lonami Exo
3c7bb53c3c Use threads for factorization
Closes #3162.
2022-01-24 14:33:30 +01:00
Lonami Exo
4aa23cfbbc Fix flood_sleep_threshold was not being forwarded
Closes #3160.
2022-01-24 14:33:30 +01:00
Lonami Exo
ed70991bf3 Merge branch 'v2'
v2 is still not complete. A lot of cleanup still needs to be done.
In particular, entities still need some care. However, most of it
is there, and keeping up with two branches is annoying.
This also lets me close a lot of issues to reduce noise
and focus on the important ones.

Closes #354 (input entities have been reworked).
Closes #902 (sessions were overhauled).
Closes #1125, #3253, #1589, #1634, #3150, #3668 (updates are reworked, gaps are properly handled now).
Closes #1169 (2.0 is now merged).
Closes #1311 (proper usage should not trigger this issue on the reworked connection code).
Closes #1327 (there have been some stringify changes).
Closes #1330 (gaps are now detected).
Closes #1366 (sessions are now async).
Closes #1476, #1484 (asyncio open connection is no longer used).
Closes #1529 (commonmark is now used).
Closes #1721 (update gaps are now properly handled).
Closes #1724 (a gap that fixes this will eventually trigger).
Closes #3006 (force_sms is gone).
Closes #3041 (a clean implementation to get difference now exists).
Closes #3049 (commonmark is now used).
Closes #3111 (to_dict has changed).
Closes #3117 (SMS is no longer an option).
Closes #3171 (connectivity bug is unlikely to be a bug in the library).
Closes #3206 (Telethon cannot really fix broken SSL).
Closes #3214, #3257, #3661 (not enough information).
Closes #3215 (this had already been fixed).
Closes #3230, #3674 (entities were reworked).
Closes #3234, #3238, #3245, #3258, #3264 (the layer has been updated).
Closes #3242 (bot-API file IDs have been removed).
Closes #3244 (the error is now documented).
Closes #3249 (errors have been reworked).
2022-01-24 13:24:35 +01:00
Danny Lin
674b7d68a5
Add support for new invite link format (#3213) 2022-01-24 13:17:22 +01:00
Devesh Pal
539e3cb808
Add new features from new layer (#3676)
Updated some documentation regarding raw API.
get_permissions has been adjusted.
Expose more parameters when sending messages.
Update chat action.
Support sending spoilers.
Update buttons.
2022-01-24 13:15:02 +01:00
Lonami Exo
a25f019964 Review, unify and simplify retry_range usage 2022-01-24 11:29:02 +01:00
Lonami Exo
b0b1f30436 Reintroduce keepalive pings in the sender 2022-01-24 11:21:01 +01:00
Lonami Exo
f775484172 Properly load and save channel state 2022-01-24 11:05:58 +01:00
Lonami Exo
f7ccf8d843 Fix reset_deadline check in messagebox 2022-01-24 11:05:27 +01:00
Lonami Exo
4b61ce18ff Don't store empty pts in messagebox
This lets us rely on "not present" for "not initialized",
as opposed to having to check not present OR not empty, and
helps prevent more bugs.
2022-01-24 11:01:51 +01:00
Lonami Exo
3aa53dd981 Add missing catch_up param to client init 2022-01-24 10:59:32 +01:00
Lonami Exo
4b85ced1e1 Reimplement catch_up 2022-01-23 19:53:48 +01:00
Lonami Exo
f547a00da3 Persist session state and usage fixes
Catching up is now an option when creating the client.
2022-01-23 19:46:51 +01:00
Lonami Exo
015acf20c6 Handle TypeNotFoundError during gzip packed msgs 2022-01-23 13:26:53 +01:00
Lonami Exo
f1a517dee6 Process self-produced updates like any other 2022-01-23 13:20:35 +01:00
Lonami Exo
1f40372235 Fix update handling for channels 2022-01-23 12:43:41 +01:00
Lonami Exo
de2cd1f2cf Fix constructing PtsInfo for channels 2022-01-23 12:34:16 +01:00
Lonami Exo
259fccaaa9 Fix messagebox porting errors 2022-01-22 13:27:14 +01:00
Lonami Exo
01291922c9 Proper usage of messagebox in update handling loop 2022-01-22 13:27:00 +01:00
Lonami Exo
f6df5d377c Begin reworking update handling
Use a fixed-size queue instead of a callback to deal with updates.

Port the message box and entity cache from grammers to start off
with a clean design.

Temporarily get rid of other cruft such as automatic pings or old
catch up implementation.
2022-01-18 19:46:19 +01:00
Lonami Exo
3afabdd7c0 Remove auto-reconnect callback
It's an abstraction leak.
The client should know to refetch updates if a long period passed
without them on its own.
2022-01-18 18:21:56 +01:00
Lonami Exo
7142734fb4 Remove StateCache and EntityCache 2022-01-18 18:19:14 +01:00
Lonami Exo
8fc08a0c96 Remove remaining self._all_dcs uses 2022-01-18 18:16:27 +01:00
Lonami Exo
f8264abb5a Clean-up client's __init__ and remove entity cache
Entity cache uses are removed. It was a source of ever-growing memory
usage that has to be reworked. This affects everything that tried to
obtain an input entity, input sender or input chat (such as the
SenderGetter or calls to _get_entity_pair). Input entities need to be
reworked in any case.

Its removal also affects the automatic cache of any raw API request.

Raise last error parameter is removed, and its behaviour made default.

The connection type parameter has been removed, since users really have
no need to change it.

A few more attributes have been made private, since users should not
mess with those.
2022-01-18 12:56:17 +01:00
Lonami Exo
85a9c13129 Fix login info did not persist 2022-01-17 11:50:28 +01:00
Lonami Exo
3f68510393 Fix EntityCache not reading the new EntityType 2022-01-17 11:41:08 +01:00
Lonami Exo
1f1f67b0a6 Remove unused _CacheType 2022-01-16 14:04:26 +01:00
Lonami Exo
4f4c7040d1 Stop using futures as one-shot channels
Instead, use a single-item queue. This is asyncio.run-friendly,
even when the client is initialized outside of async def.
2022-01-16 13:59:43 +01:00
Lonami Exo
a62627534e Get rid of client.loop
Instead, use the asyncio-intended way of implicit loop.
2022-01-16 13:51:23 +01:00
Lonami Exo
6eadc8aed8 Simplify accepted values in forward, delete and mark read
Forward and delete are meant to delete lists.
Now only lists are supported, which should not be an issue
as message.forward_to and message.delete both exist.

mark_read really only works with one message at a time,
so list support was removed for it, as well as the now
redundant max_id.
2022-01-16 13:03:00 +01:00
Lonami Exo
1e779a91b7 Add progress_callback to download_profile_photo 2022-01-16 12:42:05 +01:00
Lonami Exo
dc0f978b59 Support await on any client.action 2022-01-16 12:40:09 +01:00
Lonami Exo
a3513d5232 Remove broken force_sms 2022-01-16 12:19:07 +01:00
Lonami Exo
a95393648f Remove custom enum parsing
Python enums can already be parsed out-of-the-box.
2022-01-16 12:06:42 +01:00
Lonami Exo
fe941cb940 Address immutability issues on connect 2022-01-15 13:41:23 +01:00
Lonami Exo
f5f0c84553 Completely overhaul connections and transports
Reduce abstraction leaks. Now the transport can hold any state,
rather than just the tag. It's also responsible to initialize on
the first connection, and they can be cleanly reset.

asyncio connections are no longer used, in favour of raw sockets,
which should avoid some annoyances.

For the time being, more obscure transport modes have been removed,
as well as proxy support, until further cleaning is done.
2022-01-15 13:33:50 +01:00
Lonami Exo
02703e3753 Fix circular import regarding ignore_takeout 2022-01-15 13:18:53 +01:00
Lonami Exo
7524b652c8 Unify setting session state 2022-01-15 11:22:33 +01:00
Lonami Exo
be0da9b183 Update takeout to use less hacks 2022-01-09 14:41:10 +01:00
Lonami Exo
691160bd92 Remove 3.7 workarounds 2022-01-09 13:03:02 +01:00
Lonami Exo
be6508dc5d Use frozen dataclasses for session types
Now that 3.7 is the minimum version,
we can use dataclasses.
2022-01-09 13:01:16 +01:00
Lonami Exo
7ea30961ae Bump minimum required Python version to 3.7 2022-01-09 13:00:45 +01:00
Lonami Exo
721c803af9 Stop opening webbrowser on clicking URL buttons 2022-01-09 12:23:06 +01:00
Lonami Exo
232e76e73a Stop setting the sender to be the channel when missing 2022-01-09 12:20:58 +01:00
Lonami Exo
010ee0813a Rename send_read_acknowledge 2022-01-09 12:18:15 +01:00
Lonami Exo
1b15a34f69 Remove parse_mode from the client 2022-01-09 12:18:15 +01:00
Lonami Exo
e2132d5f7c Change the way thumb size selection works 2022-01-09 12:18:15 +01:00
Lonami Exo
03de901b7f Add enum for typing action 2022-01-09 12:18:15 +01:00
Lonami Exo
dbe66bf805 Remove TLObject.to_json 2022-01-09 12:18:15 +01:00
Lonami Exo
b566e59036 Add stringify back to custom Message 2022-01-09 12:18:15 +01:00
Hackintosh 5
8de375323e Cleanup events code 2021-12-11 21:46:23 +01:00
penn5
8d1379f3d4 Remove _finish_init from chataction.py
This method was removed in 334a847de7
2021-12-11 21:46:23 +01:00
penn5
d3ef3c69c8 Remove _finish_init from newmessage.py
This method was removed in 334a847de7
2021-12-11 21:46:23 +01:00
penn5
dea424fdec Fix typo in messages.py 2021-12-11 21:46:23 +01:00
Reinier Romero Mir
f9643bf737
Add missing async when downloading from URL (#3222) 2021-12-01 20:28:55 +01:00
Lonami Exo
bda4259815 Bump to v1.24 2021-12-01 19:08:47 +01:00
Lonami Exo
c9ecd61f7e Fix peer ID check to work with higher IDs
This commit is taken from
5f4bfe6b9b
2021-12-01 19:03:59 +01:00
Lonami Exo
a5dce81d0f Actually fill parameters in Message._as_input 2021-10-12 18:01:34 +02:00
Lonami Exo
72fc8f6808 Continue work on Message sending overhaul 2021-10-12 17:59:30 +02:00
Lonami Exo
3853f98e5f Begin work into making Message a viable way to send them 2021-10-09 12:01:45 +02:00
Lonami Exo
5a8c066ff7 Fix generated RpcError were no longer formatting the value 2021-09-28 21:07:15 +02:00
Lonami Exo
1c15375ea4 Fix get_participants was monkey-patching User
It no longer can do that. User has __slots__.
2021-09-28 21:06:00 +02:00
Lonami Exo
197a1ca996 Fix some modules were public when they should not have been 2021-09-26 19:58:42 +02:00
Lonami Exo
a9e1a574ae Fix limit was no longer defaulting to empty tuple
Introduced by 5a44510e2d.
When forwarding the calls, both signantures should match.
2021-09-26 18:37:09 +02:00
Lonami Exo
6f602a203e Fix custom.Forward not using the new __slots__ 2021-09-26 18:33:03 +02:00
Lonami Exo
e3b1dc2059 Make to_dict dynamic 2021-09-26 18:30:08 +02:00
Lonami Exo
86c47a2771 Use __slots__ in all generated classes 2021-09-26 17:52:16 +02:00
Lonami Exo
8bd4835eb2 Remove build_reply_markup from the client 2021-09-26 17:24:18 +02:00
Lonami Exo
6fec2a68c5 Use a proper markdown parser 2021-09-25 20:33:25 +02:00
Lonami Exo
1762f554df Make events subpackage private 2021-09-24 21:11:50 +02:00
Lonami Exo
5a44510e2d Forward client calls to impl in a more straightforward manner 2021-09-24 20:46:33 +02:00
Lonami Exo
ce292b36ab Fix GROUP check in EntityCache 2021-09-24 20:12:23 +02:00
Lonami Exo
debde6e856 Completely overhaul errors to be generated dynamically 2021-09-24 20:12:00 +02:00
Lonami Exo
cfe47a0434 Correct privacy on sessions module 2021-09-19 18:24:16 +02:00
Lonami Exo
26f6c62ce4 Init update state cache to empty in init 2021-09-19 18:17:37 +02:00
Lonami Exo
3b1660669e Remove self input user and bot cache from client
The session_state cache can be used instead.
This does put get_me with input_peer at a disadvantage, but I expect
this is not used all that often, since 'me' does just fine.
2021-09-19 18:16:12 +02:00
Lonami Exo
cc3d4145d8 Update and persist session state on successful login 2021-09-19 18:15:19 +02:00
Lonami Exo
3f13357d0f Fix SQLiteSession.set_state did not always clear old state
For instance, when we stored a user_id of 0 because we did not login yet.
2021-09-19 18:02:08 +02:00
Lonami Exo
016347474a Populate current user on connection if it's not yet saved 2021-09-19 18:01:01 +02:00
Lonami Exo
35a6d1e294 Fix SessionState did not store takeout_id 2021-09-19 17:59:35 +02:00
Lonami Exo
545e9d69ce Cache session_state and all_dcs right after connect 2021-09-19 17:51:05 +02:00
Lonami Exo
93dd2a186a Refresh DC info on connection 2021-09-19 17:41:40 +02:00
Lonami Exo
58c0a5bc24 Make IPv4 mandatory in session files 2021-09-19 17:30:31 +02:00
Lonami Exo
d60ebbe6ea Fix _get_peer was relying on old utils.resolve_id 2021-09-19 17:21:11 +02:00
Lonami Exo
9479e215fb Fix remaining upgraded uses of the session to work correctly 2021-09-19 17:08:51 +02:00
Lonami Exo
d33402f02e Fix _update_loop could get stuck in an infinite loop with no feedback 2021-09-19 17:08:34 +02:00
Lonami Exo
81b4957d9b Update code to deal with the new sessions 2021-09-19 16:38:11 +02:00
Lonami Exo
1f5722c925 Add missing session/types file 2021-09-19 16:37:53 +02:00
Lonami Exo
29d3c3fd7c Fix outdated LAYER usage in _create_exported_sender 2021-09-19 15:56:28 +02:00
Lonami Exo
684f640b60 Completely overhaul sessions 2021-09-19 13:45:19 +02:00
Lonami Exo
0b54fa7a25 Make edit_message parameters more consistent 2021-09-18 16:54:54 +02:00
Lonami Exo
4321b97e98 No longer run send_code_request from sign_in 2021-09-18 16:36:11 +02:00
Lonami Exo
431a9309e3 Remove mark from peer_id 2021-09-18 16:29:45 +02:00
Lonami Exo
9f3bb52e4e Possibly fix _get_response_message for UpdateMessagePoll 2021-09-18 16:10:01 +02:00
Lonami Exo
48c14df957 Remove client.download_file 2021-09-18 16:05:07 +02:00
Lonami Exo
e524a74b84 Remove client.disconnected property 2021-09-18 15:41:04 +02:00
Lonami Exo
bf61dd32af Change the way iter_participants filters are specified 2021-09-18 14:16:19 +02:00
Lonami Exo
8114fb6c9b Stop checking fwd_from or not out in message.edit 2021-09-18 13:34:21 +02:00
Lonami Exo
af81899bdc Don't automatically start the client via async-with 2021-09-18 13:30:39 +02:00