Commit Graph

504 Commits

Author SHA1 Message Date
Dan
8a5743ef0c Allow FloodWait to be raised in case of non-interactive sign-ins 2018-05-22 16:16:28 +02:00
Dan
c5911a6f6b Reorganize AES module 2018-05-19 15:36:38 +02:00
Dan
6c5ab7ed8a Add possibility to choose a config file path 2018-05-11 13:10:49 +02:00
Dan
9bb8fe55da Remove unused import and class 2018-05-11 12:50:48 +02:00
Dan
65c67aaf57 Move download_media 2018-05-09 13:36:33 +02:00
Dan
8454d438be Refactor the project by using Mixin classes
This will cut client.py down from ~4k to ~1k SLOC and also
makes the whole project tidier and more organized.
2018-05-07 14:30:55 +02:00
Dan
f5521370bb Add progress_args to download_media as well 2018-05-06 15:45:42 +02:00
Dan
00420aec92 Use the already computed channel_id 2018-05-06 15:06:32 +02:00
Dan
9f3f4099d5 Handle timeouts when getting answers from inline bots 2018-05-05 19:42:38 +02:00
Dan
553e7f714c Add get_chat method 2018-05-05 18:42:28 +02:00
Dan
7a79e5a0c4 Add media type 1 2018-05-04 18:37:36 +02:00
Dan
14b6ced6e2 Remove unused import 2018-05-03 15:47:02 +02:00
Dan
58952a7d98 Temporarily remove the debug feature 2018-05-02 23:06:22 +02:00
Dan
02ec86f4b2 Respect users' logger level, don't set to WARNING 2018-05-02 22:36:56 +02:00
Dan
f29b8bb7e4 Cache the session right after they start. Related to #68
@EriHoss is right, the session can know how to clean itself in
case for some reason it fails to start, hence it makes much more
sense to cache sessions right after they start. Also, clear the
media_sessions dict when stopping to get rid of closed sessions.
2018-05-01 21:08:47 +02:00
Dan
1b48f850bf Add new sessions to the media_sessions dict before starting them 2018-05-01 20:25:35 +02:00
Dan
83febf2e0c Cache media sessions. Related to #40. Fixes #68 2018-05-01 18:15:33 +02:00
Dan
943691fd18 Remove useless attribute 2018-05-01 11:52:14 +02:00
Dan
11aa46665e
Merge pull request #69 from EriHoss/stop_getfile_sessions
Make sure started Session is always stopped upon exceptions in Client.get_file
2018-05-01 11:45:51 +02:00
Eric Blundell
11d0eb6ea1 Make sure Session is always stopped upon exceptions in Client.get_file 2018-05-01 01:39:58 -05:00
Dan
2e81a2369d Make download_media hint string as acceptable type 2018-04-30 20:25:45 +02:00
Dan
a32e496fe3
Merge pull request #67 from JosXa/chataction-enum
Make ChatAction an Enum
2018-04-30 19:39:33 +02:00
Dan
fcb4c6d07b
Update client.py 2018-04-30 19:37:59 +02:00
Dan
4d81e6894d Make optional word italic 2018-04-30 19:30:16 +02:00
Dan
bfe6632de4 Fix index out of range for new messages 2018-04-30 19:21:58 +02:00
Dan
a7650c457d Add progress_args parameter 2018-04-30 19:09:57 +02:00
JosXa
5b492bae9d Docstring 2018-04-30 16:32:21 +02:00
JosXa
abf89688ed Also allow strings for send_chat_action 2018-04-30 16:28:43 +02:00
JosXa
e2d80a6087 Made ChatAction an Enum 2018-04-30 16:11:50 +02:00
JosXa
72e95fd322 Made ChatAction an Enum 2018-04-30 16:03:18 +02:00
Dan
e6b4f0e743 Make delete_messages accept iterables 2018-04-30 14:25:11 +02:00
Dan
b41c009962 Make forward_messages accept iterables 2018-04-30 14:24:05 +02:00
Dan
59ab1591d2 Make get_users accept iterables 2018-04-30 14:22:13 +02:00
Dan
8f8e1cfa25 Make get_messages accept iterables 2018-04-30 14:18:13 +02:00
Dan
53b0736975 Make add_handler return (handler, group) tuple 2018-04-30 13:31:11 +02:00
Dan
deed74840a Make send_message return the correct Message type 2018-04-30 13:13:30 +02:00
Dan
e2224054d2 Merge branch 'remove-handler-and-locks' of https://github.com/JosXa/pyrogram into JosXa-remove-handler-and-locks
# Conflicts:
#	pyrogram/client/dispatcher/dispatcher.py
2018-04-30 10:30:34 +02:00
Dan
f824e69b5a
Update client.py 2018-04-30 10:15:34 +02:00
JosXa
bb607e56be Added locks for modifying and iterating handlers
Added `remove_handler` method
Made `add_handler` return a (handler, group) tuple
2018-04-30 00:15:24 +02:00
Dan
33c417942c Clear thread lists when stopping. Related to #62 2018-04-29 20:20:34 +02:00
Dan
2c253b2fbc Cleanup docstrings and add some entries to the docs 2018-04-29 19:24:06 +02:00
Dan
4eed293933 Document on_callback_query 2018-04-29 18:46:35 +02:00
Dan
c32e1d9444 Document answer_callback_query 2018-04-29 18:37:03 +02:00
Dan
99a2c54992 Small fixes 2018-04-29 18:36:55 +02:00
Dan
4918be5d22 Add edit_message_reply_markup method 2018-04-29 18:31:29 +02:00
Dan
ac9a263f3d Add reply_markup argument for edit_message_* methods 2018-04-29 18:31:15 +02:00
Dan
34d7f3372f Rework delete_messages 2018-04-29 18:13:50 +02:00
Dan
d6bdf5f38b Fix typo 2018-04-29 17:29:46 +02:00
Dan
9c7935702f Add callback query support 2018-04-28 23:48:38 +02:00
Dan
c1459aa22c Add get_users method 2018-04-28 13:24:54 +02:00
Dan
4f937b2220 Add reply_markup parameter to all send_* methods 2018-04-28 09:53:21 +02:00
Dan
489bd4ac38 Remove message_parser, move all functions in utils 2018-04-28 09:38:07 +02:00
Dan
01034c174a Make get_user_profile_photos return the correct type 2018-04-28 09:04:45 +02:00
Dan
0ffad5d18e Cast file_total_parts to int
For some reason pycharm is thinking math.ceil() is returning a float
2018-04-27 15:24:27 +02:00
Dan
83dc5f7a03 Fix proxy failing when omitting optional arguments 2018-04-27 12:50:34 +02:00
Dan
4cb7733821 Regression fix: limit replies to 1 (Closes #61) 2018-04-26 10:50:30 +02:00
Dan
6e78935857 Accommodate the new types 2018-04-24 16:08:33 +02:00
Dan
debc459686 Return the correct message type with forward_messages() 2018-04-23 18:33:20 +02:00
Dan
f6415cdc15 Allow passing msg ids as int in get_messages()
Also add support for empty messages
2018-04-23 18:15:51 +02:00
Dan
a2640775dc Allow passing msg ids as int in forward_messages() 2018-04-23 13:49:31 +02:00
Dan
3d9b1cd4b0 Enable logging using debug=True 2018-04-23 13:37:50 +02:00
Dan
7054310138 Add docstrings for workdir parameter 2018-04-22 12:41:50 +02:00
Eric Blundell
40b768e97c Make Client.signal_handler reentrant (#57) 2018-04-21 20:50:30 +02:00
Dan
ae98732b95 Add workdir parameter
This makes possible to define a custom working directory.
A working directory is used to store session files. Defaults to "."
2018-04-19 10:06:41 +02:00
Dan
0bba5daea4 Update docstrings 2018-04-18 11:15:09 +02:00
Dan
f9b1d02af4 Set correct link for the Message type 2018-04-16 13:28:53 +02:00
Dan
a547eb6fa1 Update get_messages docstrings 2018-04-16 12:52:32 +02:00
Dan
f47f903f7f Make get_messages return the correct type 2018-04-16 12:42:31 +02:00
Dan
06685cfe15 Make edit_message_caption return the new type 2018-04-16 12:03:31 +02:00
Dan
fbc8cafe4d Make edit_message return the new type 2018-04-16 12:01:42 +02:00
Dan
20bd4fb605 Make send_contact return the new type 2018-04-16 11:56:52 +02:00
Dan
58c9f321b4 Make send_venue return the new type 2018-04-16 11:53:38 +02:00
Dan
cd9f44183e Make send_location return the new type 2018-04-16 11:51:32 +02:00
Dan
b4b5373505 Deprecate download_photo 2018-04-16 11:49:00 +02:00
Dan
d9b3d67126 Update download_media docstrings 2018-04-16 11:44:05 +02:00
Dan
fdac67de69 Rework download_media to accept the new Message type 2018-04-16 01:07:02 +02:00
Dan
94c9e7c52b Add some TODOs 2018-04-14 21:55:23 +02:00
Dan
b705391f79 Enhance send_media_group by accepting file_ids 2018-04-14 21:48:15 +02:00
Dan
5e26ae1894 Enhance send_video_note by accepting file_ids 2018-04-14 20:49:16 +02:00
Dan
c52ecadb76 Enhance send_voice by accepting file_ids and URLs 2018-04-14 20:42:32 +02:00
Dan
1fdb3386ff Enhance send_video by accepting file_ids and URLs 2018-04-14 20:41:23 +02:00
Dan
4f615bd6dc Enhance send_sticker by accepting file_ids and URLs 2018-04-14 19:56:11 +02:00
Dan
8446129003 Enhance send_document by accepting file_ids and URLs 2018-04-14 19:48:15 +02:00
Dan
17259d1b7b Join threads before closing the connection 2018-04-13 19:09:00 +02:00
Dan
e3c70c84ba Merge branch 'master' into new-api 2018-04-13 18:55:20 +02:00
Dan
83c4ba8a78 Handle flood wait when getting dialogs chunks 2018-04-13 18:53:55 +02:00
Dan
2f52b0e144 Merge branch 'master' into new-api 2018-04-13 16:42:26 +02:00
Dan
75cbd18ede Add ability to re-fetch usernames and contacts 2018-04-13 16:41:20 +02:00
Dan
ebc34e71d3 Optimize imports 2018-04-13 16:30:19 +02:00
Dan
e05c6a76d5 Merge branch 'master' into new-api
# Conflicts:
#	pyrogram/client/client.py
#	pyrogram/client/utils.py
2018-04-13 16:29:39 +02:00
Dan
077930f85e Lower offline sleep 2018-04-13 16:20:51 +02:00
Dan
973cb4b2b6 Make dialogs and contacts fetching smarter 2018-04-13 16:20:21 +02:00
Dan
9631dc7780 Accommodate Syncer 2018-04-13 15:21:34 +02:00
Dan
e38da08e25 Load peers from session file 2018-04-13 15:20:37 +02:00
Dan
a4b6674d4d Add date field 2018-04-13 15:05:46 +02:00
Dan
01775d0bd7 Don't pass session_name 2018-04-13 15:03:46 +02:00
Dan
6dcdeda244 Make proxy loading simpler 2018-04-13 12:30:13 +02:00
Dan
346d3da175 Add more info in case of an error 2018-04-12 14:11:01 +02:00
Dan
b5f1d3a2a5 Update docstrings 2018-04-11 03:53:10 +02:00
Dan
472ed8e355 Document the new features 2018-04-11 03:16:48 +02:00
Dan
9165c7f591 Rework decorators impl 2018-04-10 14:54:39 +02:00
Dan
142ce07576 Make handlers accept filters 2018-04-10 00:24:03 +02:00
Dan
e7fdf5a2a4 Enhance send_audio by accepting file_ids and URLs 2018-04-09 22:02:44 +02:00
Dan
245720278e Enhance send_photo by accepting file_ids and URLs
This is the first step of a total revamp of the current Pyrogram API
2018-04-08 16:50:18 +02:00
Dan
13d25f4e4a Merge branch 'master' into dispatcher 2018-04-08 13:21:30 +02:00
Dan
0bd22e9266 Fix casting in case api_id is None 2018-04-08 13:21:16 +02:00
Dan
1a7ab62ed9 Add handler for raw mtproto updates 2018-04-08 13:20:31 +02:00
Dan
66d03848de Merge branch 'master' into dispatcher 2018-04-08 12:46:15 +02:00
Dan
26a41ec00e Allow returning sms codes as int from the callback function 2018-04-08 12:46:02 +02:00
Dan
dfc8d00adb Allow passing api_id as string 2018-04-08 12:44:27 +02:00
Dan
1f05c4223a Fix copypasta 2018-04-08 11:58:17 +02:00
Dan
ee2d66b416 Only keep MessageHandler 2018-04-07 23:34:28 +02:00
Dan
90a4e4c411 Allow registering handlers using decorators 2018-04-06 20:38:34 +02:00
Dan
e98b209526 Accommodate the new Dispatcher 2018-04-06 18:48:41 +02:00
Dan
73246c26f9 Rename utils to message_parser 2018-04-06 14:47:00 +02:00
Dan
38e895ed82 Merge branch 'master' into new-api
# Conflicts:
#	pyrogram/crypto/aes.py
2018-04-05 20:13:18 +02:00
Dan
73fbe60057 Remove APIKey class 2018-04-05 13:05:27 +02:00
Dan
942c20d08b Use separate api_id and api_hash parameters
Instead of a tuple (api_id, api_hash)
2018-04-05 12:55:34 +02:00
Dan
f8b272a925 Allow passing phone numbers with white spaces
E.g.: "+39 123 456 7890"
2018-04-05 11:31:01 +02:00
Dan
195cd22ebb Better handling of reply and pin messages 2018-04-05 10:49:20 +02:00
Dan
a2590f3bc8 Don't return None
This will break Message Pin handling
2018-04-05 08:26:50 +02:00
Dan
fcf0e4515f Don't try to stop a non-started Client 2018-04-03 14:54:34 +02:00
Dan
10452dc545 Don't allow start() to be called more than once 2018-04-03 11:45:19 +02:00
Dan
e69fea4bb5 More readable exception handling 2018-04-03 11:40:08 +02:00
Dan
2f2a381686 Add extra GetDialogs step 2018-04-02 12:14:22 +02:00
Dan
b5304ca23a Use fully qualified channel id 2018-04-02 11:11:38 +02:00
Dan
21ab5295c4 Update first_name and last_name parameters' docs 2018-04-01 18:18:06 +02:00
Dan
fecea07db6 Document force_sms parameter 2018-04-01 18:17:20 +02:00
Dan
387bbbf090 Add new force_sms parameter to force Telegram sending the code via SMS 2018-04-01 17:38:22 +02:00
Dan
880eb28e9f Use double quotes 2018-03-30 22:41:34 +02:00
Dan
f1e1480c5a Only parse selected messages 2018-03-27 15:58:04 +02:00
Dan
91133812a7 Add support for service messages 2018-03-27 12:22:57 +02:00
Dan
527c5450d2 Extend support for pyrogram types 2018-03-26 20:00:25 +02:00
Dan
7447b77b25 Add initial support for pyrogram types 2018-03-26 15:17:00 +02:00
Dan
beaf88adee Remove imports, use namespaces 2018-03-26 13:41:00 +02:00
Dan
e397c4d181 Don't process empty differences 2018-03-26 13:34:54 +02:00
Dan
e680cce5fa Update docstrings 2018-03-25 22:12:52 +02:00
Dan
16eee1dabb Update docstrings 2018-03-25 21:59:04 +02:00
Dan
faa363fee8 Update docstrings 2018-03-25 21:41:19 +02:00
Dan
5bf64ac444 Don't process empty messages 2018-03-25 17:49:43 +02:00
Dan
bbe3a8a487 Set supports_streaming to True by default 2018-03-24 15:10:27 +01:00
Dan
813b7958e3 Remove token parameter 2018-03-24 15:02:03 +01:00
Dan
ef71dcf56a Remove **kwargs for generated classes (function/types) 2018-03-23 13:46:43 +01:00
Dan
1d9bb18a38 Only match full t.me/joinchat links 2018-03-23 12:59:03 +01:00
Dan
a9b1783910 Let api_key and proxy parameters override the config.ini file 2018-03-22 14:36:46 +01:00
Dan
f7ce3abc8d Merge branch 'min' 2018-03-21 17:47:02 +01:00
Dan
e464226608
Update docs 2018-03-21 17:39:53 +01:00
Dan
569ab1696a
Return the good looking absolute path instead of an ugly relative one #37 2018-03-21 16:17:13 +01:00
Eric Blundell
fa6af8695e Fix missing shutil import 2018-03-21 10:13:45 -05:00
Dan
40e7d72e87
Make paths good looking 2018-03-21 15:43:58 +01:00
Dan
76ad29ae11
Fix saving files on another drive (windows) @EriHoss 2018-03-21 15:42:32 +01:00
Dan
f6ea3e9b42
Cleaner code and some little changes
TODO: "" or None for faulty download, which is better?
2018-03-21 13:39:23 +01:00
Eric Blundell
0f4e29584a Make use of tempfile.NamedTemporaryFile in getfile, use context managers 2018-03-21 04:07:55 -05:00
Eric Blundell
b45960212b Simplify branch in download_worker exception handler 2018-03-21 03:19:09 -05:00
Dan
b6a42aa8cd
Do not mkstemp twice
Also use elif to make it less confusing
2018-03-21 09:01:18 +01:00
Eric Blundell
8796e857af Amend comment on shutil.move in download_worker
os.renames cannot move across drives/partitions on any platform.

that is why shutil.move is used, because the OS allotted temp file could
possibly be on another drive or partition.

Also fix code formatting on new import statements.
2018-03-20 23:20:08 -05:00
Eric Blundell
2cf2dd26f0
Merge branch 'master' into flexible_media_downloads 2018-03-20 22:28:42 -05:00
Eric Blundell
f0c00c8801 move first mkstemp to exception safe location in get_file 2018-03-20 16:30:48 -05:00
Eric Blundell
4c9e4df532 Amendment to comment on fdopen usage in get_file 2018-03-20 16:18:32 -05:00
Eric Blundell
cd0e585d0d Avoid calling fdopen on closed descriptor 2018-03-20 15:42:31 -05:00
Eric Blundell
5bc10b45a3 Use OS temp file, specific path download via path seperator inspection 2018-03-20 15:20:04 -05:00
Dan
aa8125d7a2 Log more info in case there is an exception in get_file #37 2018-03-20 19:27:25 +01:00
Dan
2b33f23990 Check whether get_file failed or not #37
If it failed, also delete any eventual temporary file
2018-03-20 19:25:23 +01:00
Eric Blundell
62831001b7 Slight amendment to client.download_(media/photo) doc 2018-03-20 09:39:58 -05:00
Eric Blundell
bd1234f227 fix open file leak in client.download_media 2018-03-20 09:02:17 -05:00
Eric Blundell
0694480a46 allow file objects be passed to file_name arg of client.download_media 2018-03-20 08:33:14 -05:00
Eric Blundell
db80c72b08 Create file_name directory trees in download_worker 2018-03-20 08:27:44 -05:00
Eric Blundell
c0212a7b10 Correct default file_dir value behaviour 2018-03-20 08:20:03 -05:00
Eric Blundell
19854a5d4f Actually raise mutually exclusive arg error 2018-03-20 08:10:24 -05:00
Eric Blundell
4ae9a5ad38 Make sure file_dir is created 2018-03-20 08:05:41 -05:00
Eric Blundell
b9f623921d Make file_name and file_dir mutually exclusive 2018-03-20 07:47:38 -05:00
Eric Blundell
6bb004fc83 Add file_dir parameter to client.download_media 2018-03-20 07:34:38 -05:00
Eric Blundell
19b1bbb942 Allow download_media to download media to anywhere
Remove the use of a temporary file in the programs
working directory.
2018-03-20 07:04:35 -05:00
Dan
17f7141278 Merge branch 'master' into min 2018-03-19 19:58:32 +01:00
Dan
2deea2e4a6 Remove unused imports 2018-03-19 03:38:09 +01:00
Dan
299d6aca5c Raise ConnectionError if client is not started 2018-03-19 03:37:43 +01:00
Dan
310f9080c4 Remove unnecessary method calls 2018-03-19 01:54:45 +01:00
Dan
eecc9412b5 Merge branch 'master' into min 2018-03-19 01:53:59 +01:00
Dan
0f2dc6c624 Remove unnecessary method calls 2018-03-19 01:53:07 +01:00
Dan
9e386ed24c Remove resolve_username method 2018-03-19 01:51:47 +01:00
Dan
70ae7f0808 Fix usernames not stored in lowercase 2018-03-19 01:40:36 +01:00
Dan
390b0c12e2 Set updates_workers to 1 2018-03-19 01:08:59 +01:00
Dan
c4142753d0 Handle minified channel updates 2018-03-19 01:08:34 +01:00
Dan
5b5fb6cbec Update docstrings to accommodate joinchat links 2018-03-18 13:00:28 +01:00
Dan
cbd3b71b79 Handle mismatches in a more pythonic way 2018-03-18 12:12:27 +01:00
Dan
1d25b84cde Update invite link regex pattern 2018-03-18 11:43:51 +01:00
Dan
b45f2f4595 Add support for sending messages using joinchat links and hashes 2018-03-17 19:24:27 +01:00
Dan
1da39efa2e Update invite link regex 2018-03-17 19:13:15 +01:00
Dan
600e705d51 Add docstrings for "token" parameter 2018-03-17 19:05:18 +01:00
Dan
839f7b99f4 Call GetState for bots 2018-03-15 20:41:13 +01:00
Dan
6d536107ae Add support for bots login via token 2018-03-15 12:25:29 +01:00
Dan
3b2d264f5e Fix reference link 2018-03-14 11:01:33 +01:00
Dan
7beb611cea Update docstrings 2018-03-14 10:59:35 +01:00
Dan
f997e97494 Add support for downloading photos not contained inside a Message 2018-03-13 16:26:53 +01:00
Dan
62e67f5257 Add get_messages method 2018-03-11 17:16:38 +01:00
Dan
ca54b62f63 Strip "+" away from phone numbers when logging in 2018-03-10 15:21:31 +01:00
Dan
f55062bc6d Add support for Bot API style basic group IDs (with minus sign)
Closes #32
2018-03-08 12:28:38 +01:00
Dan
859305b744 Update docstrings 2018-03-08 10:34:04 +01:00
Dan
27a96a0df4 Fix progress going over 100% 2018-03-08 10:31:34 +01:00
Dan
b5c7cf781a Document the progress parameter 2018-03-08 10:25:10 +01:00