Commit Graph

540 Commits

Author SHA1 Message Date
Dan
64ec26850e Document save_file 2018-12-28 15:16:46 +01:00
Dan
d91acfe2ca Re-implement password-protected log-ins and support password recovery 2018-12-25 15:41:55 +01:00
Dan
fccadf526e Merge branch 'develop' into future
# Conflicts:
#	pyrogram/__init__.py
2018-12-25 14:36:59 +01:00
Dan
00e4e385aa Allow bots to message old chats even if they don't exist in the session 2018-12-24 22:31:45 +01:00
Dan
84fef9ecf1 Add missing file_reference argument where applicable 2018-12-23 00:55:00 +01:00
Dan
bf0b947253 Type hint all Client methods 2018-12-19 14:55:48 +01:00
Dan
8f6f38e0b0 Merge branch 'develop' into new-parsers 2018-12-18 11:22:47 +01:00
Dan
bc824f738c Add extra warnings when sign-ins or sign-ups fail 2018-12-18 11:21:37 +01:00
Dan
c9bcf93cf7 Add extra checks in case sign-in or sign-up fails 2018-12-18 10:10:04 +01:00
Dan
914dfca574 Reformat code and optimize imports 2018-12-18 09:50:39 +01:00
Dan
70470360b1 Print account name when logging in the first time 2018-12-15 11:10:25 +01:00
Dan
001a067d82 Make start and stop methods return self to make chaining possible
Suggestion by @CharlesBachman in Telegram
2018-12-15 09:50:35 +01:00
Dan
4ba5e63034 Report offset instead of 0 in case file size is missing (for file_id) 2018-12-15 08:51:20 +01:00
Dan
9c91720104 Fix broken download_media progress args 2018-12-15 08:50:08 +01:00
Dan
e400641204 Fix Dispatcher bad behaviours in case of multiple Clients running at the same time. 2018-11-13 20:31:53 +01:00
Dan
c006ba5b30
Merge pull request #146 from TolichP/add-filesize-limit-error
Add file size limit error
2018-11-03 11:11:06 +01:00
Dan
09563067c7
Add a check for 0 B file sizes 2018-11-03 11:10:43 +01:00
Dan
45129658b0 Revisit docstrings 2018-11-03 10:49:11 +01:00
Dan
99bdaae365 Allow nested folders for smart plugins 2018-10-23 15:43:49 +02:00
Dan
a0780d793d Apply code review suggestions 2018-10-21 14:44:29 +07:00
Dan
1fe46610cd Make plugins disabled by default
Users need to explicitly set plugins_dir parameter
2018-10-21 09:42:22 +02:00
Alexandr
ee47c21eed Add file size limit error 2018-10-19 23:39:29 +07:00
Dan
f4146a8779 Accept None as plugins_dir 2018-10-13 19:33:43 +02:00
Dan
8e238ccc9a Add plugins_dir docstrings in Client class definition 2018-10-13 11:14:26 +02:00
Dan
345ac6e16a Merge branch 'develop' into plugins 2018-10-13 10:42:07 +02:00
Dan
9649b1457c Don't make use of hardcoded default int values too 2018-10-13 10:41:58 +02:00
Dan
340fb9c145 Merge branch 'develop' into plugins
# Conflicts:
#	pyrogram/client/client.py
#	pyrogram/client/ext/base_client.py
2018-10-13 10:39:47 +02:00
Dan
a32009a79d Don't make use of hardcoded default string values 2018-10-13 10:38:44 +02:00
Dan
6a0066b8b5 Move loading plugins logic into a separate method 2018-10-12 17:57:34 +02:00
Dan
4bb50ee35f More logs when loading plugins 2018-10-12 17:54:52 +02:00
Dan
6c05f9ff42 Sanitize (a bit) plugins directory 2018-10-12 15:26:52 +02:00
Dan
4e516d097f Don't raise exceptions in case of non-existent plugins folder
Don't even warn in case the default plugins folder doesn't exist
2018-10-12 14:32:35 +02:00
Dan
0b79f96b4f Turn hardcoded plugins dir into a constant 2018-10-12 14:19:26 +02:00
Dan
dfb841baa9 Automatically scan and load plugins from a customizable directory
Defined functions found inside the directory that are also decorated
properly will be registered in the Client's dispatcher as handlers.
2018-10-12 14:17:03 +02:00
Dan
b79bd1ea83 Don't swallow left_chat_member updates
Even though they are only relevant for supergroups with <50 members
2018-10-01 09:45:32 +02:00
Dan
12c61fb431 Fix unwanted CHANNEL_PRIVATE errors. Fixes #129 2018-10-01 09:40:34 +02:00
Dan
6a89c7ea02 Add missing ipv6 docstrings 2018-09-22 14:21:55 +02:00
Dan
3a858e6a57 Fix config values not being available when not using config.ini file 2018-09-19 17:30:23 +02:00
Dan
8b364202c3 Use list instead of set 2018-09-18 19:17:28 +02:00
Dan
500ec09b47 Clean up load_config 2018-09-18 19:16:55 +02:00
Dan
f850d6352e Enhance API by adding support for Context Managers. Closes #122
A batch script would be as simple as this example:

from pyrogram import Client

with Client("...") as app:
    app.send_message("haskell", "hi")
2018-09-17 18:53:04 +02:00
Dan
e7a85520f2 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	pyrogram/client/client.py
2018-09-17 15:59:49 +02:00
Dan
c75a4f182a
Handle Telegram exceptions on start(). Fixes #121
The client doesn't need to be stopped as it never started successfully.
2018-09-15 13:23:25 +02:00
Dan
db6042e91b Fetch ChatForbidden and ChannelForbidden peers
This fixes unwanted PEER_ID_INVALID errors in cases where a user or a
bot was kicked/banned from a group, supergroup or channel
2018-09-02 13:04:29 +02:00
Dan
9f4d7854e8 Fix ipv6 branch merge mess 2018-08-30 01:23:19 +02:00
Dan
4b3b647245 Merge branch 'ipv6' into develop
# Conflicts:
#	pyrogram/client/client.py
#	pyrogram/session/session.py
2018-08-28 12:19:37 +02:00
Dan
2779e33d13 Rename "token" to "bot_token" 2018-09-10 19:55:53 +02:00
Dan
da436461a8 Revert "Move resolve_peer into utilities"
This reverts commit 6437c6c
2018-08-10 11:29:13 +02:00
Dan
6437c6c5be Move resolve_peer into utilities 2018-08-10 11:17:53 +02:00
Dan
d270d0d2aa Remove support for t.me/joinchat/ links in resolve_peer for now
Another way, which is 100% reliable, will be implemented
Also clean the method a bit by removing useless checks
2018-07-28 23:09:44 +02:00
Dan
0c96fa8b7c Don't flush each chunk. Let python/os deal with it 2018-07-11 17:05:33 +02:00
Dan
1d7c857e9f Rename get_dialogs 2018-07-04 21:02:26 +02:00
Dan
52f1f390ca Rename get_dialogs 2018-07-04 20:59:21 +02:00
Dan
8bdccda6ee Fix GetDialog call 2018-07-04 14:03:45 +02:00
Dan
c7489cf302 Reformat code 2018-07-04 14:03:14 +02:00
Dan
29fb0ce599 Also log UpdatesTooLong 2018-07-04 13:53:34 +02:00
Dan
e414956e71
Log UpdateChannelTooLong updates 2018-07-03 18:29:25 +02:00
Dan
c660d3a7d0 Fix PhotoSize not having date anymore 2018-07-01 19:43:29 +02:00
Dan
7ed9cd6759 Add "Login successful" message upon login 2018-06-27 14:42:04 +02:00
Dan
ecaba45523 Keep only lang_code 2018-06-27 00:42:32 +02:00
Dan
2587394e07 Merge branch 'layer-81' into develop 2018-06-25 00:43:47 +02:00
Dan
fa7b7d0ce3 Cleanup Client class 2018-06-24 19:09:39 +02:00
Dan
9c420bb73b Document the new parameters. Closes #86 2018-06-24 19:09:39 +02:00
Dan
9a012077cc Remove some redundant code. Related to #86 2018-06-24 18:54:47 +02:00
Dan
55ef4abb27 Allow user-defined session properties. Related to #86
This commit adds five 5 extra parameters to the Client class:
app_version, device_model, system_version, system_lang_code, lang_code
2018-06-24 18:47:49 +02:00
Dan
f4c0793a0b Make session leaner by removing some redundant parameters
Related to #86
2018-06-24 18:27:41 +02:00
Dan
69d1432251 Allow user-defined values for retries and timeout 2018-06-24 17:47:29 +02:00
Dan
44f71f096f Better docs for phone_code argument 2018-06-24 16:53:07 +02:00
Dan
47043380fb Pass the phone number when calling the phone_code callback function 2018-06-24 16:11:22 +02:00
Dan
0cd4795318 Use TOS provided by Telegram 2018-06-23 16:15:44 +02:00
Dan
668da4ae0e Merge branch 'tos' into layer-81
# Conflicts:
#	pyrogram/client/ext/base_client.py
2018-06-23 16:11:20 +02:00
Dan
fc541221ed Accept terms of service after successfully signing in 2018-06-23 16:08:28 +02:00
Dan
7f11f85c8f Move signal handler inside idle 2018-06-23 15:45:48 +02:00
Dan
82a0c965ba Don't make start and idle clickable 2018-06-22 13:12:31 +02:00
Dan
e3299bb3b7 Add run() method 2018-06-22 13:10:09 +02:00
Dan
ffd67ed408 Remove debug docstrings 2018-06-22 13:08:27 +02:00
Dan
dab0a05f16 Move idle() and signal_handler() definitions near stop() 2018-06-22 13:08:01 +02:00
YoilyL
2944181b38
fixed session mistake
use new session when uploading files instead of main session
2018-06-13 17:54:48 +03:00
Dan
ade1c2f377 Accommodate ipv6 in the Client class 2018-06-13 13:38:14 +02:00
Dan
8e2aec4d3a Show TOS on sign-ins 2018-06-07 12:54:23 +02:00
Dan
91cf103783 Remove a bunch of useless TODOs 2018-06-02 20:54:23 +02:00
Dan
dc7fe93aeb Clean up code 2018-06-02 20:52:16 +02:00
Dan
b4a2490da2 Use getpass instead of input 2018-06-01 19:27:05 +02:00
Dan
00b983ccc3 Fix proxy not being correctly updated 2018-05-25 11:52:40 +02:00
Dan
65c209000c Connection refactoring 2018-05-24 21:19:57 +02:00
Dan
9001ccd11f Add DisconnectHandler 2018-05-23 14:27:17 +02:00
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