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