Commit Graph

1653 Commits

Author SHA1 Message Date
Lonami Exo
5e13a6f7a8 Fix-up get_message failing for UpdateInlineBotCallbackQuery 2018-09-19 16:42:22 +02:00
Lonami Exo
ac59cfa25b Return chat from inline queries that "don't have it" 2018-09-19 16:40:35 +02:00
udf
3ef2416138 Add method to resolve inline message IDs (#1005) 2018-09-19 14:22:35 +02:00
Lonami Exo
db8bea3968 Fix getting messages by ID for private chats 2018-09-16 15:45:38 +02:00
Lonami Exo
4e07712b04 Return new .web_preview's .photo/.document if present in Message 2018-09-15 10:45:15 +02:00
Lonami Exo
080585da49 Support coroutine callbacks in start() 2018-09-09 16:17:20 +02:00
Lonami Exo
2f09e5c335 Support custom-callback filter for all events 2018-09-09 15:48:54 +02:00
Lonami Exo
11ef4ce370 Fix _document_by_attribute failing on empty media 2018-09-06 15:41:04 +02:00
Lonami Exo
4e5b8c9c34 Let sender = chat for messages from channels 2018-09-06 10:33:56 +02:00
Lonami Exo
ae085f30a8 Save update state upon disconnect 2018-09-04 11:58:55 +02:00
Lonami Exo
3c92f6a791 Fix sqlite's conn may be None if never used
This happened when signing up with the library
and getting migrate errors.
2018-09-04 11:28:01 +02:00
Lonami Exo
bbeb8f4ba3 Clarify and fix some docstrings 2018-09-04 11:27:10 +02:00
Wirtos
36df6d1bf9 Manually register ogg mimetype too (#973) 2018-08-28 21:17:10 +02:00
Lonami Exo
0e91fc3668 Manually register webp mimetype
Otherwise, sending stickers would fail on some systems.
2018-08-27 17:19:10 +02:00
Lonami Exo
8a9650f131 Fix-up previous commit 0bb0d0b missing parameter 2018-08-27 10:58:06 +02:00
Lonami Exo
576ac666d9 Fix resolving events while disconnected 2018-08-27 01:20:01 +02:00
Lonami Exo
5ca1edb228 Return the correct entity from .get_entity(username)
The precedence of the or operator made the check succeed always
out of pure luck, since `''.lower()` would never be the chosen
username, but a present username is truthy.

This presumably worked because Telegram only returns one result
from the call, or puts the right entity the first one.
2018-08-26 12:00:17 +02:00
s3mple
29d122e810 Fix-up previous commit f17d7e9 (#967) 2018-08-24 19:50:55 +02:00
s3mple
f17d7e9c5e New exception class for multiple errors (#965) 2018-08-24 18:25:58 +02:00
Lonami Exo
52a4327769 Fix MemorySession file caching 2018-08-22 16:21:22 +02:00
Lonami Exo
8e62f797bb Support custom encoding for StringSession 2018-08-22 16:12:27 +02:00
s3mple
aa9bc9080f Support custom symbol set for aggressive get_participants 2018-08-21 17:15:35 +02:00
Lonami Exo
fbc46bd388 Use loop.create_future instead asyncio.Future 2018-08-21 12:22:06 +02:00
Lonami Exo
d3a6822fc9 Properly resolve events 2018-08-21 12:18:12 +02:00
Lonami Exo
47190d7d55 Fix event loop not being passed into many asyncio calls 2018-08-21 11:31:14 +02:00
Lonami Exo
d474458136 Simplify event resolving logic
Although this commit introduces a race condition since an
event may only be half-resolved. A lock is thus needed,
but it depends on an event-loop to which we don't have
access in the class-level.
2018-08-21 11:08:08 +02:00
Lonami Exo
9f237cc928 Simplify event building logic
This will also fix some bugs where the event type being accessed
would not be available, since it is now built on-demand, without
the need to keep track for the count of each event type.
2018-08-21 10:27:12 +02:00
Lonami Exo
f0cd1fdd6e Don't disconnect sender on cancellation (#958)
This was causing a "race condition" where the sender would
be disconnected after cancellation when another was created.
2018-08-20 14:59:17 +02:00
Lonami Exo
171e13daa9 Special case File responses without parent request (#658) 2018-08-20 11:42:51 +02:00
Lonami Exo
dda1f0b1dd Stop copying reply when resending Message, fix file replies 2018-08-19 11:49:36 +02:00
Lonami Exo
f4b9c9d6d4 Remove critical code from assert statements 2018-08-14 19:14:13 +02:00
Lonami Exo
7efa53fedf Update to v1.2 2018-08-14 18:48:56 +02:00
Lonami Exo
06da651f27 Fix edits in custom.Conversation 2018-08-14 18:42:16 +02:00
Lonami Exo
216805d62d Fix telethon.sync for custom.Conversation 2018-08-14 18:41:13 +02:00
Lonami Exo
653686996a Revisit catch_up (#808) 2018-08-13 12:32:12 +02:00
Lonami Exo
d3efc8f57d Better logging for packing errors
https://github.com/expectocode/telegram-export/issues/76
2018-08-08 12:04:20 +02:00
Lonami Exo
e3bf6e3330 Document reply markup limits 2018-08-07 12:46:05 +02:00
Lonami Exo
9195bccb41 Fix sending files from disk after 6d1bc22 (#941 and #943) 2018-08-06 18:03:42 +02:00
Lonami Exo
44558cc592 Add utils.resolve_bot_file_id inverse 2018-08-06 17:54:07 +02:00
Lonami Exo
f332e4c423 Clearer variable naming 2018-08-06 16:31:15 +02:00
Lonami Exo
f39f9a94b5 Remove unnecessary async/await 2018-08-06 16:30:25 +02:00
Lonami Exo
d3a9dcd36c Replace wait code with asyncio.wait_for and pass the client's loop 2018-08-06 16:22:11 +02:00
Lonami Exo
8ce001318e Fix StringSession(None) 2018-08-05 19:45:56 +02:00
Lonami Exo
0011f19f8b Create a StringSession 2018-08-05 16:24:34 +02:00
Lonami Exo
63174ae404 Properly clean-up Conversation 2018-08-05 13:15:19 +02:00
Lonami Exo
26bcc78d14 Fix Conversation.get_response 2018-08-05 12:28:54 +02:00
Lonami Exo
cc067b2569 Add Conversation to the sync magic module 2018-08-05 11:05:01 +02:00
Lonami Exo
48113851a8 Fix built Conversation events don't have the client 2018-08-05 02:01:06 +02:00
Lonami Exo
ca40a9c282 Add Conversation.wait_event 2018-08-05 01:55:41 +02:00
Lonami Exo
1ecb751222 Add Conversation.send_file and .mark_read 2018-08-04 23:21:19 +02:00
Lonami Exo
396b1a4177 Improve getting edits in a Conversation 2018-08-04 15:35:51 +02:00
Lonami Exo
5f73482d29 Restart Conversation total timeout upon __aenter__ 2018-08-04 15:35:04 +02:00
Lonami Exo
a688c8a4ce Fix exception ignored warnings and invalid state #935 2018-08-04 15:06:11 +02:00
Nikolay Tretyak
d0c566bbdb Fix iter_participants is failing when _total is None (#936) 2018-08-04 11:30:24 +02:00
Lonami Exo
2cf95ce2b9 Fix accessing buttons on messages with reply markup 2018-08-04 11:16:51 +02:00
Lonami Exo
c1d67f35c9 Fix creating unknown RPCError messages with known code failing 2018-08-04 00:43:53 +02:00
Lonami Exo
785ef7676f Create a basic custom.Conversation 2018-08-03 17:51:56 +02:00
Lonami Exo
60c61181d9 Return custom.InlineResults instead of a simple list 2018-08-02 23:31:51 +02:00
Lonami Exo
7cce7aa3e4 Return helpers.TotalList instances on client.get_ methods 2018-08-02 23:00:10 +02:00
Lonami Exo
070c971d11 Set media as None if it is MessageMediaEmpty 2018-08-02 20:18:28 +02:00
Lonami Exo
f4ea662fdd Fix sign in not saving self user to session file 2018-08-02 19:40:48 +02:00
Lonami Exo
7a7923b317 Fallback to MemorySession if sqlite3 is not available 2018-08-02 15:17:44 +02:00
Lonami Exo
16f7626ceb Fix custom.Button._is_inline failing for MessageButton 2018-08-02 14:53:26 +02:00
Lonami Exo
3612652f39 Use builtin base64.urlsafe_b64decode and fix docstring 2018-08-02 13:59:27 +02:00
Lonami Exo
2ca8ddbfb4 Use cache for invite links 2018-08-02 13:47:35 +02:00
Lonami Exo
328f737ef7 Support custom.MessageButton as buttons reply markup 2018-08-02 13:17:59 +02:00
Lonami Exo
10da14418c Create utils.get_peer 2018-08-02 12:56:40 +02:00
Lonami Exo
80a5e709cb Support .download_media with bot API file_id 2018-08-01 13:40:07 +02:00
Lonami Exo
e359b428c3 Merge branch 'inlineresult' 2018-08-01 01:06:59 +02:00
Lonami Exo
7a2d7d98ad Implement client.inline_query() 2018-08-01 01:06:47 +02:00
Lonami Exo
49a6cb4ef8 Fix InlineResult.click() 2018-08-01 01:06:08 +02:00
Lonami Exo
76c7217000 Support downloading web documents 2018-08-01 00:37:25 +02:00
Lonami Exo
7d880a856e Implement InlineResult.download_media 2018-08-01 00:15:23 +02:00
Lonami Exo
6d1bc227aa Support bot API file_id on send_file 2018-07-31 23:35:22 +02:00
Lonami Exo
972950fc2e Create utils.resolve_bot_file_id 2018-07-31 23:35:07 +02:00
Lonami Exo
638eeb3c82 Fix attributes not being inferred for open()ed files 2018-07-31 12:14:13 +02:00
Lonami Exo
f0a26d7c76 Implement global search (closes #920) 2018-07-29 23:16:22 +02:00
Lonami
223b007a55
Fix get_message_id after custom message patch 2018-07-29 15:49:12 +02:00
Lonami Exo
96742334a4 Fix incoming = outgoing = True not working 2018-07-29 13:03:10 +02:00
Lonami Exo
682e650187 Create a basic InlineResult class 2018-07-29 12:56:11 +02:00
Lonami Exo
cc4c620261 Show more information for bare RPCError (#919) 2018-07-29 12:40:40 +02:00
Lonami Exo
f2c8663266 Fix copy pasted docs and snake_case files 2018-07-28 11:28:02 +02:00
Lonami Exo
26f121060d Always support aggressive in iter_participants (#904) 2018-07-25 12:40:49 +02:00
Lonami Exo
7729a2a78f More logging for bad messages (#907) 2018-07-25 12:33:12 +02:00
Lonami Exo
b3990546eb Fix RPCError may occur for no parent message (#908) 2018-07-25 12:19:28 +02:00
Lonami Exo
7b4cd92066 Revert 030f292 (use libssl if available) 2018-07-25 12:11:58 +02:00
Lonami Exo
200a4e47b8 Clarify some strings 2018-07-25 02:21:44 +02:00
Lonami Exo
7b22c72c3e Use UTC timezone for events.UserUpdate 2018-07-24 20:38:38 +02:00
Lonami Exo
6c51c35ccf Fix _iter_ids not expecting InputChannel 2018-07-24 18:20:34 +02:00
Lonami Exo
7778b665db Update to v1.1.1 2018-07-23 12:44:46 +02:00
Lonami Exo
d8fa0c81f6 Fix-up 52292d7 accessing types under the wrong module 2018-07-23 12:19:41 +02:00
Lonami Exo
056842d1a0 Fix trailing comma breaking Python 3.5.2 compat 2018-07-23 12:18:35 +02:00
Lonami Exo
52292d77fb Use types. namespace in utils 2018-07-22 19:40:00 +02:00
Lonami Exo
ace7254344 Fix classes MRO and abstractmethod usage
Furthermore utils needs to access the message by reference
through types.Message because it is patched and replaced.
2018-07-22 19:26:34 +02:00
Lonami Exo
1c0d595205 Replace custom.Message creation with ._finish_init 2018-07-22 19:20:55 +02:00
Lonami Exo
fd17098447 Rename MessageBase for Message 2018-07-22 17:22:52 +02:00
Lonami Exo
c4e94abcf0 Complete moving properties to the new message base 2018-07-22 16:49:42 +02:00
Lonami Exo
a3ac6d1645 Create a common message base class 2018-07-22 13:26:12 +02:00
Lonami Exo
5df46f9ed8 (Try to) fix infinite recursion in custom.Message again 2018-07-22 12:27:08 +02:00
Lonami Exo
bc03c29216 Fix logical bugs when getting input peers in custom.Message
Such as incorrectly handling InputPeerSelf/InputPeerChat and
using self._input_sender when self._input_chat was expected.
2018-07-22 11:33:29 +02:00
Lonami Exo
e4963237dc Fix-up a332d29 should not be exported on invalid DC 2018-07-22 01:08:03 +02:00
Lonami Exo
a332d29c4c Fix-up 5a9a00e to handle exporting senders to the same DC 2018-07-22 00:40:39 +02:00
Lonami Exo
46b2d910d7 Fix logging of functools.partial() callbacks 2018-07-21 17:52:42 +02:00
Lonami Exo
3d7bff64c2 Update to v1.1 2018-07-21 15:29:09 +02:00
Lonami Exo
3bdfd4b32c Make build_reply_markup public 2018-07-21 13:55:26 +02:00
Lonami Exo
7750c9ff2f Make sure to not add callbacks from buttons= twice 2018-07-21 13:24:32 +02:00
Lonami Exo
24758b82ec Don't make a request at all if it will trigger flood wait 2018-07-21 12:25:20 +02:00
Lonami Exo
a9cc35e604 Avoid triggering FileMigrateError when possible 2018-07-21 11:59:44 +02:00
Lonami Exo
5a9a00e7ae Assume exported auths last forever
This implies that export senders will NOT be deleted from
memory once all borrows are returned, thus their auth_key
remains as well. When borrowing them if they existed they
will be connect()ed if it's the first borrow.

This probably fixes #901.
2018-07-21 11:24:20 +02:00
Lonami Exo
13437cc3f2 Fix infinite recursion for custom.Message.message 2018-07-21 10:19:17 +02:00
Lonami Exo
aa67f107af Temporarily use blocking SSL sockets on connect 2018-07-19 20:56:45 +02:00
Lonami Exo
4027ac6a6f Wrap socket with SSL after connecting
See https://github.com/Anorov/PySocks/issues/29
2018-07-19 20:38:53 +02:00
Lonami Exo
7f78d7ed2f Use classmethod for all Event.build 2018-07-19 01:47:32 +02:00
Lonami Exo
2d7c8908eb Create events.InlineQuery 2018-07-15 11:31:24 +02:00
Lonami Exo
5017a9d1da Fix typos and add the URL_INVALID error 2018-07-14 10:43:24 +02:00
Lonami Exo
dc3d281274 Load update state date with explicit timezone (#808) 2018-07-14 00:01:45 +02:00
Lonami Exo
051d56af88 Support clicking buttons known their data 2018-07-12 16:26:22 +02:00
Lonami Exo
22c8fd7378 Fix Updates object being dispatched to user handlers 2018-07-12 09:45:29 +02:00
Lonami Exo
38c65adf35 Set timezone info when reading datetimes 2018-07-12 00:30:57 +02:00
Lonami Exo
8b4c8d30e7 Fix events.MessageDeleted setting readonly properties 2018-07-11 11:34:20 +02:00
Lonami Exo
4f5c6f1006 Merge branch 'event-reusing' 2018-07-11 11:31:46 +02:00
Lonami Exo
e2ffa816dc Fix infinite recursion 2018-07-11 11:23:11 +02:00
Lonami Exo
1d0fd6801d Build events only once per update 2018-07-11 11:22:43 +02:00
Lonami Exo
81f31e09c8 Keep track of how many events for each type were added 2018-07-11 10:50:19 +02:00
Lonami Exo
e902304360 Expose silent parameter when sending messages 2018-07-11 10:16:21 +02:00
Lonami Exo
a3d6baf408 Actually add callbacks registered through Button 2018-07-10 19:50:18 +02:00
Lonami Exo
f6c45dcc63 Support filtering events.CallbackQuery 2018-07-10 17:59:13 +02:00
Lonami Exo
ea07cf8d12 Add buttons parameter to client.edit_message 2018-07-10 17:59:13 +02:00
Lonami Exo
05e8e60291 Create events.CallbackQuery 2018-07-10 17:59:13 +02:00
Lonami Exo
8eecd9c226 Reuse code to get chat and sender 2018-07-10 17:59:13 +02:00
Lonami Exo
531a02a2a1 Support buttons when sending a file too 2018-07-10 17:59:13 +02:00
Lonami Exo
8c28be04bc Create a custom.Button class and support send_message(buttons=...) 2018-07-10 17:59:13 +02:00
Lonami Exo
a50d013ee6 Support interactively signing in as a bot 2018-07-10 17:59:13 +02:00
Lonami
ac5f8da50c
Fix update.pts may be None 2018-07-10 16:59:40 +02:00
josephbiko
e6981e7676 Remove empty except (#887) 2018-07-09 20:54:43 +02:00
Lonami Exo
4328663c78 Support timedelta as datetimes 2018-07-09 13:36:52 +02:00
Lonami Exo
1437b69829 Update to v1.0.4 2018-07-09 12:32:47 +02:00
Lonami Exo
1b22d0eb12 Add missing await 2018-07-08 23:44:56 +02:00
Lonami Exo
7b6e65a7a5 Re-export ConnectionHttp from the network package 2018-07-08 17:48:38 +02:00
Lonami
128053750d
Implement HTTP(S) mode (closes #112) (#883) 2018-07-08 17:45:49 +02:00
Lonami Exo
e0513e10df Remove debug print 2018-07-08 15:24:33 +02:00
Lonami Exo
3a9cce8720 Add missing async/await to events' documentation 2018-07-08 15:11:10 +02:00
Lonami Exo
d02cb84abe Fix end of sync with block warning on disconnect 2018-07-08 00:05:09 +02:00
Lonami Exo
54bffb30d8 Fix send_message('me', Message) 2018-07-08 00:05:09 +02:00
Lonami Exo
cb3846cb7f Add client.get_peer_id 2018-07-07 12:45:50 +02:00
Lonami Exo
3b3b148a43 Revert add_mark parameter on utils.get_peer_id
And a fix for -1000 IDs that wasn't being accounted for.
2018-07-07 12:44:21 +02:00
Lonami Exo
bb4ed4019f Revert forward_messages requiring named from_peer arg 2018-07-07 12:14:50 +02:00
Lonami Exo
bd878acbde Support InputNotifyPeer autocast 2018-07-07 12:14:03 +02:00
Lonami Exo
dfda61a1b5 Correct thumb parameter documentation 2018-07-07 12:01:42 +02:00
Lonami Exo
393e1966c7 Avoid exceeding maximum container size
This issue would likely be triggered when automatically
merging multiple requests into a single one while having
their size exceed 1044456 bytes like SaveFilePartRequest.

This commit avoids such issue by keeping track of the
current size, and if it exceeds the limit, avoid merge.
2018-07-07 11:58:48 +02:00
Lonami Exo
33ce702ab9 Pre-pack outgoing TLMessage
This has several benefits:
- The message can be resent without re-calling bytes(),
  which for some requests may be expensive.
- Converting requests to bytes early lets us detect
  errors early, such as OverflowError on bad requests.
- Containers can't exceed 1044456 bytes so knowing their
  length is important. This can now be done in O(1).

But also several drawbacks:
- If the object is modified the bytes won't reflect this.
  This isn't an issue because it's only done for in msgs.
- Incoming messages can no longer be reconverted into
  bytes but this was never needed anyway.
2018-07-07 11:46:21 +02:00
Lonami Exo
b237947af1 Update to v1.0.3 2018-07-04 15:41:11 +02:00
Lonami Exo
44630542d0 Fix MessageAction not allowing access to media
This caused some issues with events.MessageEdited because
some MessageAction can trigger these edit updates such as
scoring in a game.
2018-07-03 14:13:44 +02:00
Lonami Exo
43afdb9d77 Fix-up 53fbfb2 for InputPeerChat or others 2018-07-03 14:05:42 +02:00
Lonami Exo
53fbfb215f Fix Telegram may omit entities' access hash in updates 2018-07-02 18:43:42 +02:00
Lonami Exo
53c660d0dc Don't remove reader if fd == -1 2018-06-30 13:26:28 +02:00
Harry
dfcf414111 Fix hachoir don't close files by itself (#875) 2018-06-29 16:45:18 +02:00
Lonami Exo
baedd10110 Update to layer 82 2018-06-29 13:23:56 +02:00
Lonami Exo
dd0eb7a90e Explicitly open files as 'r' instead of leaving it out 2018-06-29 11:34:57 +02:00
Lonami Exo
d64eb7ea2b Avoid cyclic imports on older Python versions 2018-06-29 11:04:42 +02:00
Lonami Exo
3c2ff45b0b Support dispatching updates in a sequential order 2018-06-29 10:45:04 +02:00
Lonami Exo
0f737a86af Revert sign_in needing named code argument 2018-06-29 09:57:57 +02:00
Lonami Exo
dbca38c6f5 Allow iterating over messages in reverse 2018-06-28 21:15:29 +02:00
Lonami Exo
ac6dbb8a5c Fix is_connected accessing unexisting property 2018-06-28 16:04:12 +02:00
Lonami Exo
0f5f6cc050 Fix opposite condition 2018-06-28 15:50:26 +02:00
Lonami Exo
cedf90eb57 Update to v1.0.2 2018-06-28 15:37:30 +02:00
Lonami Exo
ac2b10f2a5 Stop using loop's time() function 2018-06-28 15:12:18 +02:00
Lonami Exo
491302bb32 Fix parallel downloads when using exported senders 2018-06-28 14:10:36 +02:00
Lonami Exo
fb40e7b508 Update mtprotoplainsender.py asserts 2018-06-28 09:48:03 +02:00
Lonami Exo
3154575ab6 Update to v1.0.1 2018-06-27 19:55:37 +02:00
Lonami Exo
a6782ac6ea Send getState upon successful reconnection 2018-06-27 19:40:32 +02:00
Lonami Exo
c0412e4410 Fix run_until_disconnected disconnect with telethon.sync 2018-06-27 19:39:47 +02:00
Lonami Exo
ad01bda503 Fix custom.Message.buttons being None in channels (#870)
The implications behind this were bigger than expected. The sender
of the message is not actually needed for anything in the bot. The
bot itself may be needed, but only for KeyboardButtonSwitchInline.
2018-06-27 19:25:14 +02:00
Lonami Exo
18f06f1a25 Fix bad notification due to wrong system clock never ending 2018-06-27 19:04:33 +02:00
Inokenty
f014c040a3 Keyword arg instead positional for sign_in (#869) 2018-06-27 17:23:46 +02:00
Lonami Exo
a46a45d060 Don't disconnect on del if already disconnected/loop closed 2018-06-27 13:57:17 +02:00
Lonami Exo
72835dfb44 Update to v1.0 2018-06-27 13:41:20 +02:00
Lonami Exo
4be248932d Fix non-ending awaits due to requests not being resent on reconnect 2018-06-27 10:26:26 +02:00
Lonami Exo
58aadce5ba Fix-up 2b090f8 not actually resaving new auth_keys 2018-06-27 10:15:59 +02:00
Lonami Exo
e604960a1d Include TAKEOUT_INIT_DELAY_X in the available errors 2018-06-27 09:46:14 +02:00
Lonami Exo
75865cbaa8 Syncify async generators too 2018-06-27 09:34:35 +02:00
Lonami Exo
8c5bbdf7eb Check from_user client-side for PMs in iter_messages 2018-06-26 16:48:03 +02:00
Lonami Exo
09ea8ffe0b Fix send_file completely ignoring input parameters 2018-06-26 16:39:43 +02:00
Lonami Exo
2bd0c6c525 Support URLs on send_file 2018-06-26 16:39:22 +02:00
Lonami Exo
2b090f8888 Fix connect not saving different authkeys 2018-06-26 16:20:30 +02:00
Lonami Exo
9159e2a720 Remove report_errors/flood_sleep_threshold from the session 2018-06-26 16:09:16 +02:00
chrizrobert
1eb4af33df Fix get_entities_text with cls (#866) 2018-06-26 15:58:55 +02:00
Lonami Exo
dbb81173fa Add an assistant bot example 2018-06-26 15:48:56 +02:00
Lonami Exo
6152e33454 Fix sync run_until_disconnected not liking Ctrl+C 2018-06-26 15:48:38 +02:00
Lonami Exo
f6bfcad49e Don't close session file on _switch_dc disconnect 2018-06-26 13:37:34 +02:00
Lonami Exo
3556d5ed79 Fix-up 9971145 still accessing unexisting properties 2018-06-26 13:15:25 +02:00
Lonami Exo
96e8b0b840 Remove get_fwd_sender 2018-06-26 12:38:58 +02:00
Lonami Exo
9971145721 Assert properties exist on disconnect 2018-06-26 12:03:31 +02:00
Lonami Exo
19900a373a More useful messages from authenticator.py 2018-06-26 11:32:09 +02:00
Lonami Exo
32786d16fd Support using the client in with blocks 2018-06-26 11:26:01 +02:00
Lonami Exo
d4b508bf48 Fix __del__ with sync magic 2018-06-26 11:23:51 +02:00
Lonami Exo
75dc4809f5 Remove all deprecated methods 2018-06-26 11:10:11 +02:00
Lonami Exo
a43c6c2b68 Work around Python 3.5.2 bug causing 100% CPU load on script's end 2018-06-26 11:10:11 +02:00
Lonami Exo
f295ea668a Make sync.syncify a public function for user types 2018-06-26 11:10:11 +02:00
Lonami Exo
044e6e8a85 Await updates task to finish upon disconnect 2018-06-26 11:10:11 +02:00
Lonami Exo
fc834f60fb Fix custom.Dialog passing the wrong instance to custom.Draft 2018-06-25 21:24:46 +02:00
Lonami Exo
d65f8ecc0d Document the magic sync module 2018-06-25 21:14:58 +02:00
Lonami Exo
551b0044ce Reuse more code using sqlite's cursor 2018-06-25 20:11:48 +02:00
Lonami Exo
313bead615 Close sqlite's cursor after usage 2018-06-25 19:49:33 +02:00
Lonami Exo
4da50ba3a0 Add a syncify magic module to use asyncio as sync 2018-06-25 14:24:56 +02:00
Lonami Exo
9c6d2894fc Allow start when the loop is not running 2018-06-25 13:42:29 +02:00
Lonami Exo
db5cb74bdd Allow run_until_disconnected when the loop is running 2018-06-25 13:32:31 +02:00
Lonami Exo
c1046c2acc Fix "user joined" being "user added itself" 2018-06-25 13:21:23 +02:00
Lonami Exo
59f6b75391 Stop showing "data left after" warning 2018-06-25 12:54:33 +02:00
Lonami Exo
410518aa65 Stop using await with properties 2018-06-25 11:38:56 +02:00
Lonami Exo
0d09f9d8c1 Create a custom.Forward class 2018-06-25 11:34:10 +02:00
Lonami Exo
efc9f4c414 Get rid of all remaining async properties 2018-06-25 11:03:20 +02:00
Lonami Exo
ae47fd37b0 Update to v1.0-rc1 2018-06-24 15:51:24 +02:00
Lonami Exo
266d44dd86 Fix EventsCommon still having async properties 2018-06-24 13:05:58 +02:00
Lonami Exo
d4479a0a4e Save the session file less often 2018-06-24 12:21:58 +02:00
Lonami Exo
184424957d Create a separate method to start reconnections 2018-06-24 10:44:31 +02:00
Lonami Exo
0d0e78e10b Use the right chat peer in private messages 2018-06-23 15:10:07 +02:00
Lonami Exo
51da48ddd2 Support custom parse_mode to use MessageEntityMentionName 2018-06-22 16:18:23 +02:00
Lonami Exo
3d3698562b Cleanly handle KeyboardInterrupt in run_until_disconnected 2018-06-22 13:26:24 +02:00
Lonami Exo
1a1d9d346c Fix most private messages being outgoing since 56ddaae
56ddaae checked to_id and from_id to compare if they were equal,
and if they were, mark the event as outgoing for convenience in
your private chat (saved messages).

However when reconstructing the Message from UpdateShortMessage
to_id didn't mimic 100% Telegram's behaviour (the chat to which
the message is sent is "different" depending on who sent the
messages). This bug is what actually caused most messages to
be outgoing, even though 56ddaae's logic is correct.
2018-06-22 10:25:20 +02:00
Lonami Exo
8d98c04932 Fix awaits on input_chat property 2018-06-22 10:05:29 +02:00
Lonami Exo
f733f8e565 Rewrite the first part of the docs for asyncio 2018-06-21 21:54:54 +02:00
Lonami Exo
5e322a6ca9 Remove async properties from custom.Message
Awaiting on a property was strange and only really made sense
in events.NewMessage. Methods like client.get_messages() and
similar return entire custom.Message which won't need to touch
the network, and requiring the await was a poor UX.
2018-06-21 21:15:48 +02:00
Lonami Exo
3973755333 Support .name attr in utils.is_type/client.upload_file
This means open()'ed files will have their name used properly,
and that you can set b.name = 'somename.jpg' to io.BytesIO()
objects to have them uploaded as images.
2018-06-21 16:31:03 +02:00
Lonami Exo
d8af64e3b9 Clarify/fix get[_input]_entity docstrings 2018-06-21 11:08:14 +02:00
Lonami Exo
5c602d4ba7 Add __str__ to RpcResult/GzipPacked 2018-06-21 09:58:12 +02:00
Lonami Exo
a99fce471a Fix cancelling a None handle on first connection+error 2018-06-21 09:48:11 +02:00
Lonami Exo
cfa5cd0db2 Fix is_user_authorized always returning True 2018-06-21 09:32:09 +02:00
Lonami Exo
8d5c052fce Fix TypeError when accessing unexisting sender 2018-06-21 09:26:31 +02:00
Lonami Exo
d6818f25f5 Fix rare iter_dialogs infinite loop 2018-06-20 21:12:47 +02:00
Lonami Exo
9c0a22ddd7 Fix Python 3.5 compatibility 2018-06-20 20:18:16 +02:00
Lonami Exo
9e3f6483e8 Fix pattern= and move pattern_match to events.NewMessage 2018-06-20 20:03:44 +02:00
Lonami Exo
a1477a84bf Update in-memory updates.State 2018-06-20 19:58:01 +02:00
Lonami Exo
4ab5c7d92d Fix reconnect sentinel when not reconnecting in send_loop
It would cause issues with the debug logs, since it assumes it's
a TLMessage, which have an .obj attribute. Second, the send_loop
is also smarter regarding reconnects (since OSError often occur
due to not being connected at all, namely ConnectionResetError).
2018-06-20 18:19:57 +02:00
Lonami Exo
c8ee0bdca9 Fix socket may be None when closing twice 2018-06-20 17:59:11 +02:00
Lonami Exo
a0eb824e87 Support ignore_migrated in iter_dialogs 2018-06-20 12:03:42 +02:00
Lonami Exo
c893eaaa84 Allow filtering new messages by sender/forwards 2018-06-20 11:58:44 +02:00
Lonami Exo
ad1ab64415 Save last ack to resend in case of bad salt 2018-06-20 11:12:04 +02:00
Lonami Exo
c85ba4accc Revisit documentation, cross-references and unnecessary indents 2018-06-20 11:06:03 +02:00
Lonami Exo
4e9a84c3b5 Remove underscore from module names 2018-06-18 21:02:42 +02:00
Lonami Exo
262018959f Process entities from sent requests/updates 2018-06-18 20:44:20 +02:00
Lonami Exo
fbf3bf119c Separate errors needing regex from those which don't 2018-06-18 19:09:45 +02:00
Lonami Exo
463847ad50 Revisit and remove a few TODOs 2018-06-18 18:46:06 +02:00
Lonami Exo
ebfe8ebf40 Configurable per-client request/connection retries 2018-06-18 18:13:00 +02:00
Lonami Exo
09ea1179ca Except msg_id KeyError on bad salt/msg 2018-06-18 17:20:31 +02:00
Lonami Exo
3648f7c756 Log outgoing message types and incoming message IDs 2018-06-18 17:14:04 +02:00
Lonami Exo
51d8ea0fa8 Shield disconnected Future in the MTProtoSender instead 2018-06-18 15:55:24 +02:00
Lonami Exo
efc48ee3b0 Shield self.disconnected and log RpcCallFail 2018-06-18 14:28:30 +02:00
Lonami Exo
ee7a44d447 Return an empty list from get_entities_text if no entities 2018-06-18 13:54:09 +02:00
Lonami Exo
3c1d7d2da2 Fix MessageEmpty when searching for messages 2018-06-18 13:48:50 +02:00
Lonami Exo
7641ba2d32 Fix sleep on the wrong indent and handle CancelledError
This was causing a huge slow-down every time a request was
received delaying all the subsequent incoming messages too
2018-06-18 13:29:12 +02:00
Lonami Exo
374f5e2aab Periodically send ping/getState 2018-06-18 13:22:25 +02:00
Lonami Exo
94d6c339c4 Add more logging in the MTProtoSender 2018-06-18 11:29:54 +02:00
Lonami Exo
e36aff51dd Raise ConnectionError when sending without connection
Otherwise the program could potentially block on await client(...)
since this has no timeout (unless asyncio.wait_for() was used) and
would give no further hint that the program was halted there.
2018-06-17 20:25:22 +02:00
Dan Elkouby
d5b349e031 Implement a mechanism to notify of connection failures (#852) 2018-06-17 19:29:41 +02:00
Lonami Exo
d9d586171f Fix MTProtoSender should not send content-related queries 2018-06-17 16:23:22 +02:00
Lonami Exo
145d4b7105 Remove socket fd from the loop reader upon closing 2018-06-17 15:48:26 +02:00
Lonami Exo
aaa7ec757b Support start() retrying on PasswordHashInvalidError 2018-06-17 14:07:45 +02:00
Lonami Exo
4d1272f1d2 Fix __ is invalid in usernames (cc @Kyle2142) 2018-06-17 12:08:55 +02:00
Lonami Exo
b65cbd8647 Validate to_id when iterating over messages by ID 2018-06-17 11:57:11 +02:00
Lonami Exo
226c35ff8f Pump up default timeout from 5 to 10s 2018-06-17 11:46:56 +02:00
Lonami Exo
d18ee9ecc5 Handle (re)connection errors more gracefully 2018-06-17 11:41:35 +02:00
Lonami Exo
8086772506 Make sure not to include sentinel in containers 2018-06-16 18:40:08 +02:00
Lonami Exo
bb2cacd525 Fix automatic reconnection by unblocking the send queue 2018-06-16 18:34:36 +02:00
Lonami Exo
56ddaaee6f Make non-fwded messages sent to yourself outgoing 2018-06-16 17:35:24 +02:00
Lonami Exo
7cfecfaf21 Support pathlib.Path on download/upload 2018-06-16 17:01:20 +02:00
Lonami Exo
cbd5594dba Use the correct clock time when sleeping on iter_messages 2018-06-15 17:09:16 +02:00
Lonami Exo
509fba8bcc Fix-up isinstance/is_user_authorized from 06cdf1f 2018-06-15 13:01:16 +02:00
Lonami Exo
b7286be3b0 Get the "correct" chat in private incoming messages 2018-06-15 12:46:41 +02:00
Lonami Exo
31c94ec184 Add a lock for resolving events 2018-06-15 10:11:43 +02:00
Dan Elkouby
df15ee421c Except connection timeouts in MTProtoSender 2018-06-15 10:58:29 +03:00
Lonami Exo
24d2074e0c Set _input_chat on custom.Message creation/fixup input_chat 2018-06-14 23:40:44 +02:00
Lonami Exo
091b03c635 Use create_task instead ensure_future 2018-06-14 23:33:56 +02:00
Lonami Exo
f95400ea7e Try again to get input_chat on EventsCommon 2018-06-14 23:26:04 +02:00
Lonami Exo
06cdf1fdb0 Raise on phone/network migrate if authorized 2018-06-14 23:16:00 +02:00
Lonami Exo
c788e17c22 Fix _handle_update not expanding Updates 2018-06-14 22:51:57 +02:00
Lonami Exo
179af9894f Add missing parenthesis around await 2018-06-14 22:25:03 +02:00
Lonami Exo
0f14f3b16a Support custom event loops 2018-06-14 19:35:12 +02:00
Lonami Exo
908dfa148b Revisit codebase to add missing async/await 2018-06-14 17:09:20 +02:00
Lonami Exo
1247d050ab Remove unused fields from the Sessions
Most of the stuff didn't actually need to be saved and only
belong to the MTProtoState which is not a separate class from
the sessions.
2018-06-14 17:04:15 +02:00
Lonami
bb3a564500
Merge pull request #843 from LonamiWebs/core-rewrite
Core rewrite
2018-06-14 16:25:28 +02:00
Lonami Exo
5bb2f50232 Handle Msg state/resend/all (from 7c0af2c by @andr-04) 2018-06-14 16:23:16 +02:00
Lonami Exo
4a9eb5b085 Handle OSError on MTProtoSender 2018-06-14 16:16:11 +02:00
Lonami Exo
df1dfdf8ea Remove some redundant except 2018-06-14 16:13:46 +02:00
Lonami Exo
c9ea1bafc0 Apply @andr-04 asyncio commits to TcpClient 2018-06-14 16:08:23 +02:00
Lonami Exo
3ce8b17193 Dispatch updates to event handlers 2018-06-13 16:20:15 +02:00
Lonami Exo
898ce34c65 Set __all__ on telethon.__init__.py 2018-06-13 11:50:36 +02:00
Lonami Exo
a91109c9fa Retry send_code_request on AuthRestartError 2018-06-13 10:55:37 +02:00
Lonami Exo
8a787e90c2 Remove send/recv locks
There is only one method sending and one method receiving,
so it doesn't make sense to lock-protect those operations.
2018-06-13 10:04:27 +02:00
Lonami Exo
3324090c96 Fix non-asyncio sleep 2018-06-13 09:59:30 +02:00
Lonami Exo
3f16c92eb3 Subclass TLRequest for content-related objects 2018-06-12 20:14:21 +02:00
Lonami Exo
d1afc70963 Fix setting Pong results 2018-06-12 19:46:37 +02:00
Lonami Exo
d4dc147459 Handle DraftMessageEmpty (closes #844) 2018-06-12 19:25:13 +02:00
Lonami Exo
2a90de2b08 Fix broadcast being named post for is_group property 2018-06-12 12:31:37 +02:00
Lonami Exo
f9cd220ddd Implement _get_exported_sender 2018-06-11 20:05:10 +02:00
Lonami Exo
64dd957189 Fix None first_query and TcpClient.disconnect() 2018-06-11 19:51:01 +02:00
Lonami Exo
f581db294a Better custom.MessageButton.click() docs 2018-06-11 10:25:57 +02:00
Lonami Exo
aa6d3430ae Properly handle bot timeouts when clicking buttons 2018-06-11 10:20:22 +02:00
Lonami Exo
f86f52d960 Fix async_generator's and missing awaits 2018-06-10 22:00:55 +02:00
Lonami Exo
8be6adeab4 Make use of the async_generator module 2018-06-10 21:50:28 +02:00
Lonami Exo
15ef302428 Implement _switch_dc/fix missing first request 2018-06-10 21:30:31 +02:00
Lonami Exo
4a491e45ce Fix broken debug call 2018-06-10 21:02:22 +02:00
Lonami Exo
d462b04a9c Add async/await on tl.custom 2018-06-10 20:29:57 +02:00
Lonami Exo
1bde72d375 Make the TelegramClient aggregate all client methods 2018-06-10 19:05:36 +02:00
Lonami Exo
fb8b052754 Separate update requests from the TelegramClient 2018-06-10 13:58:21 +02:00
Lonami Exo
ac2e59b472 Separate auth requests from the TelegramClient 2018-06-10 12:57:36 +02:00
Lonami Exo
4ff0756ffc Separate download requests from the TelegramClient 2018-06-10 12:04:23 +02:00
Lonami Exo
317b7053a0 Separate parse message methods from uploads 2018-06-10 11:33:20 +02:00
Lonami Exo
83a024656c Rename client.files as client.uploads 2018-06-09 22:14:51 +02:00
Lonami Exo
ad29f2f5b7 Separate chat requests from the TelegramClient 2018-06-09 22:13:18 +02:00
Lonami Exo
1e91e5a83c Separate dialogs methods from the TelegramClient 2018-06-09 22:09:02 +02:00
Lonami Exo
4bd20f1ce2 Separate file and message methods from TelegramClient 2018-06-09 22:05:06 +02:00
Lonami Exo
bb9b9796e0 Separate user methods from the base client 2018-06-09 21:22:54 +02:00
Lonami Exo
4b147f0153 Move clients to a new package 2018-06-09 21:11:35 +02:00
Lonami Exo
d76b27058f Warn on invoke and clean TelegramClient 2018-06-09 21:10:23 +02:00
Lonami Exo
3e151a1b7a Make TelegramBareClient able to invoke requests 2018-06-09 21:03:48 +02:00
Lonami Exo
7e68274f26 Keep consistent structure and remove done TODO 2018-06-09 15:42:10 +02:00
Lonami Exo
acd6025731 Use put_nowait and avoid double await 2018-06-09 15:26:13 +02:00
Lonami Exo
485ce5ca3b Ignore padding on server messages instead warning
There's 12..1024 padding for the MTProto 2.0 protocol, and
the length of the message can be used to determine how much
must be read on rpc_results. However this random padding
can be safely ignored.
2018-06-09 14:23:42 +02:00
Lonami Exo
be279ce3f5 Make TLMessage always have a valid TLObject
This simplifies the flow instead of having separate request/body
attributes, and also means that BinaryReader.tgread_object() can
be used without so many special cases.
2018-06-09 13:48:27 +02:00
Lonami Exo
f7e8907c6f Create RpcResult class and generalise core special cases
This results in a cleaner MTProtoSender, which now can always
read a TLObject with a guaranteed item, if the message is OK.
2018-06-09 13:13:55 +02:00
Lonami Exo
1e66cea9b7 Reuse some more code from MTProtoState 2018-06-09 11:36:59 +02:00
Lonami Exo
adfe861e9f Create a self-contained MTProtoState
This frees us from using entire Session objects in something
that's supposed to just send and receive items from the net.
2018-06-09 11:34:01 +02:00
Lonami Exo
cc5753137c Clean-up TelegramBareClient - unnecessary? 2018-06-08 21:52:59 +02:00
Lonami Exo
a63580c350 Private methods are not public API 2018-06-08 21:18:15 +02:00
Lonami Exo
6766c4eea9 Make heavy use of logging 2018-06-08 21:13:14 +02:00
Lonami Exo
e36517845a Retry on connection/security errors 2018-06-08 20:50:53 +02:00
Lonami Exo
92b606a3e8 Automatically reconnect on connection reset 2018-06-08 20:42:39 +02:00
Lonami Exo
5c917fb425 Except timeout error and retry 2018-06-07 18:01:18 +02:00
Lonami Exo
f72ddbdd5a Implement retry and fail cases in authenticator 2018-06-07 17:25:02 +02:00
Lonami Exo
df895a94ab Create auth_key if not present 2018-06-07 16:32:12 +02:00
Lonami Exo
a940e2e9a2 Process entities and add a handler for updates 2018-06-07 14:32:22 +02:00
Lonami Exo
c7e4ae8672 Send acks 2018-06-07 14:16:47 +02:00
Lonami Exo
805bf00dee Support sending multiple requests at once 2018-06-07 14:04:04 +02:00
Lonami Exo
884dbe2d1f Use a custom Queue to simplify the _send_loop 2018-06-07 13:51:19 +02:00
Lonami Exo
382355a22f Collapse multiple requests into a single container 2018-06-07 13:33:32 +02:00
Lonami Exo
a3687b8bb5 Complete all methods under MTProtoSender and document them 2018-06-07 12:29:43 +02:00
Lonami Exo
0418f7e375 Fix get_entities_text and allow filtering by type 2018-06-07 10:46:32 +02:00
Lonami Exo
56b09c0c9d Properly set future results 2018-06-07 10:30:20 +02:00
Lonami Exo
9477c75fce Fix basic requests sending and receiving 2018-06-06 21:42:48 +02:00
Lonami Exo
e469258ab9 Create a new MTProtoSender structure and its foundation
This means that the TcpClient and the Connection (currently only
ConnectionTcpFull) will no longer be concerned about handling
errors, but the MTProtoSender will.

The foundation of the library will now be based on asyncio.
2018-06-06 20:41:01 +02:00
Lonami Exo
ed5c44a260 Support deleting more than 100 messages at once 2018-06-05 21:27:49 +02:00
Lonami Exo
30ad06f29a Fix events.Raw not having ._set_client 2018-06-04 18:36:23 +02:00
Vaschuk Maxim
3db104c7bc to_bytes() named argument 'length' removed for PyPy (#834) 2018-06-04 12:34:52 +02:00
Lonami Exo
2e43fb3217 More nasty hacks to fix events.NewMessage attrs 2018-06-03 17:09:36 +02:00
Lonami Exo
fe3172b2c9 Fix accept TOS must be called after sign up (#824) 2018-06-03 16:47:19 +02:00
Lonami Exo
997f2b62ce Fix EventCommon/custom.Message conflicting properties 2018-06-03 16:41:13 +02:00
Lonami Exo
8c8a0153ef Revert 9db9d1e's count and fix typo 2018-06-03 15:20:52 +02:00
Lonami Exo
ab9d10c569 Update to v0.19.1 2018-06-03 14:20:50 +02:00
Lonami Exo
c2b8f8a1d6 Support editing media 2018-06-03 13:49:19 +02:00