@@ -66,6 +66,7 @@ def __init__(self, token, threaded=True, skip_pending=False):
6666 self .pre_message_subscribers_next_step = {}
6767
6868 self .message_handlers = []
69+ self .edited_message_handlers = []
6970 self .inline_handlers = []
7071 self .chosen_inline_handlers = []
7172 self .callback_query_handlers = []
@@ -123,6 +124,7 @@ def __retrieve_updates(self, timeout=20):
123124
124125 def process_new_updates (self , updates ):
125126 new_messages = []
127+ edited_new_messages = []
126128 new_inline_querys = []
127129 new_chosen_inline_results = []
128130 new_callback_querys = []
@@ -131,6 +133,8 @@ def process_new_updates(self, updates):
131133 self .last_update_id = update .update_id
132134 if update .message :
133135 new_messages .append (update .message )
136+ if update .edited_message :
137+ edited_new_messages .append (update .edited_message )
134138 if update .inline_query :
135139 new_inline_querys .append (update .inline_query )
136140 if update .chosen_inline_result :
@@ -140,6 +144,8 @@ def process_new_updates(self, updates):
140144 logger .debug ('Received {0} new updates' .format (len (updates )))
141145 if len (new_messages ) > 0 :
142146 self .process_new_messages (new_messages )
147+ if len (edited_new_messages ) > 0 :
148+ self .process_new_edited_messages (edited_new_messages )
143149 if len (new_inline_querys ) > 0 :
144150 self .process_new_inline_query (new_inline_querys )
145151 if len (new_chosen_inline_results ) > 0 :
@@ -154,6 +160,9 @@ def process_new_messages(self, new_messages):
154160 self ._notify_message_subscribers (new_messages )
155161 self ._notify_message_next_handler (new_messages )
156162
163+ def process_new_edited_messages (self , edited_message ):
164+ self ._notify_command_handlers (self .edited_message_handlers , edited_message )
165+
157166 def process_new_inline_query (self , new_inline_querys ):
158167 self ._notify_command_handlers (self .inline_handlers , new_inline_querys )
159168
@@ -305,7 +314,7 @@ def get_chat_members_count(self, chat_id):
305314 return result
306315
307316 def get_chat_member (self , chat_id , user_id ):
308- result = apihelper .get_chat_member (self .token , chat_id ,user_id )
317+ result = apihelper .get_chat_member (self .token , chat_id , user_id )
309318 return types .ChatMember .de_json (result )
310319
311320 def send_message (self , chat_id , text , disable_web_page_preview = None , reply_to_message_id = None , reply_markup = None ,
@@ -388,7 +397,8 @@ def send_voice(self, chat_id, voice, duration=None, reply_to_message_id=None, re
388397 apihelper .send_voice (self .token , chat_id , voice , duration , reply_to_message_id , reply_markup ,
389398 disable_notification , timeout ))
390399
391- def send_document (self , chat_id , data , reply_to_message_id = None , caption = None , reply_markup = None , disable_notification = None , timeout = None ):
400+ def send_document (self , chat_id , data , reply_to_message_id = None , caption = None , reply_markup = None ,
401+ disable_notification = None , timeout = None ):
392402 """
393403 Use this method to send general files.
394404 :param chat_id:
@@ -401,7 +411,8 @@ def send_document(self, chat_id, data, reply_to_message_id=None, caption=None, r
401411 apihelper .send_data (self .token , chat_id , data , 'document' , reply_to_message_id , reply_markup ,
402412 disable_notification , timeout , caption = caption ))
403413
404- def send_sticker (self , chat_id , data , reply_to_message_id = None , reply_markup = None , disable_notification = None , timeout = None ):
414+ def send_sticker (self , chat_id , data , reply_to_message_id = None , reply_markup = None , disable_notification = None ,
415+ timeout = None ):
405416 """
406417 Use this method to send .webp stickers.
407418 :param chat_id:
@@ -502,8 +513,8 @@ def answer_callback_query(self, callback_query_id, text=None, show_alert=None):
502513 def edit_message_text (self , text , chat_id = None , message_id = None , inline_message_id = None , parse_mode = None ,
503514 disable_web_page_preview = None , reply_markup = None ):
504515 result = apihelper .edit_message_text (self .token , text , chat_id , message_id , inline_message_id , parse_mode ,
505- disable_web_page_preview , reply_markup )
506- if type (result ) == bool : # if edit inline message return is bool not Message.
516+ disable_web_page_preview , reply_markup )
517+ if type (result ) == bool : # if edit inline message return is bool not Message.
507518 return result
508519 return types .Message .de_json (result )
509520
@@ -670,6 +681,32 @@ def add_message_handler(self, handler, commands=None, regexp=None, func=None, co
670681
671682 self .message_handlers .append (handler_dict )
672683
684+ def edited_message_handler (self , commands = None , regexp = None , func = None , content_types = ['text' ]):
685+ def decorator (handler ):
686+ self .add_edited_message_handler (handler , commands , regexp , func , content_types )
687+ return handler
688+
689+ return decorator
690+
691+ def add_edited_message_handler (self , handler , commands = None , regexp = None , func = None , content_types = None ):
692+ if content_types is None :
693+ content_types = ['text' ]
694+
695+ filters = {'content_types' : content_types }
696+ if regexp :
697+ filters ['regexp' ] = regexp
698+ if func :
699+ filters ['lambda' ] = func
700+ if commands :
701+ filters ['commands' ] = commands
702+
703+ handler_dict = {
704+ 'function' : handler ,
705+ 'filters' : filters
706+ }
707+
708+ self .edited_message_handlers .append (handler_dict )
709+
673710 def inline_handler (self , func ):
674711 def decorator (handler ):
675712 self .add_inline_handler (handler , func )
0 commit comments