The idea was nice, but it really complicated things for us and for the
user.
If a user wants to run more than one handler on an update, he can put
the handlers in different groups or he can have a single handler.
If a user wants to have multiple handlers in the same group which only
one of them should run on the update, he should use check_update().
Since we haven't released this code yet, there's no problem with
backward compatability.
Required fixes:
- CallbackQuery is now comparable.
- Message.effective_attachment, Message.photo,
Message.new_chat_members, Message.new_chat_photo &
Game.text_entitties semantic fixes - when they are not defined,
return an empty list.
- Docstring fix to Update class.
- Added all the new and shiny features from API 3.1.
- Not API 3.1 changes:
- Use future.utils.string_types for string isinstance checks.
- Stall between retries of test_set_webhook_get_webhook_info() &
test_delete_webhook().
So just remove it for now. Better than doing annoying stuff with parsing a **kwargs dict in my opinion. It didn't even *really* need to be kwarg only anyways I guess...
* Rename shortcut functions to snake_case
* More function renaming
* Example function rewrite
* Add myself to authors.rst
* More function renaming
* Rename mockbot test functions
* Break comment line for flake max line length
* add support for User.language_code
* Add language filter
Useful is you wanna do something like restrict your shop to a single or a few locales or something like that.
* Allow edited as seperate input
In short made it possible to tune messagehandler more to your wishes. and choose exactly what updates to receive. messages, edited_message or channel_post or a combination.
- Added the edited_updates argument to MessageHandler
- Added DepricationWarning when using allow_edited
- replaced _is_allowed_message and _is_allowed_channel_post with _is_allowed_update
- Modified tests to reflect new way
* oops
Spelled deprecation wrong
made an error in the _is_allowed_update.
* Python 2 does not have assertWarns.
* remove unneeded statements
* Improved CommandHandler
Now you can pass list of commands instead of one command
* Added tests for list of commands
* Return backward compatibility
Renamed `commands` to `command` in CommandHandler
* Added test for a command not in the list
* Fixed py2 unicode command support in `CommandHandler`
* Fix Bug #571
ConversationHandler will not process CallbackQuery if per_chat=True and
the CallbackQuery has no message attached to it (as is the case with
buttons on inline results)
* Adds test case for CallbackQuery without Chat
* Introduce MessageQueue
* minor documentation and terminology fixes according to the review
* minor documentation and terminology fixes according to the review
* minor documentation and terminology fixes according to the review
* pep8 fix
* conversationhandler.py: add per_chat, per_user and per_message
* test_conversationhandler.py: test case per_user=False
* test_conversationhandler.py: add test for callbackqueryhandlers
* ✏️ Fix accidental typo in logging format
* stripping token of whitespaces before starting bot
* Line feed
* CommandHandler checks if message is for this bot
* CommandHandler checks if message is for this bot
- Added tests
* Fixed tests in test_conversationHandler to work with new commandhandler structure
* type in conversationhandler test
* Added methods to generate the original markdown/html formatted string from the entities contained in an update
* Added
* Moved the html/markdown parsing methods to `Message`
* Moved extract_* methods from helpers to the appropriate location
* Refactored text_markdown and text_html
* Refactored text_markdown and text_html for efficiency
* Fixed method call in conversationhandler
* Fixed method call in handler
* Fixed `make test` command on windows systems
* Improved method documentation
- Job.job_queue is now weakref.proxy reducing the risk of cyclic
pointers preventing Job object from being deleted.
- JobQueue._put(): raise if both next_t and job.interval are None
- Don't put repeating job back to queue if user had disabled it was
disabled during the time of execution.
- New method: Job.is_removed() - promising a consistent API (instead of
access to private member Job._remove)
- Documentation fixes.
* New fields channel_post and edited_channel_post for Update
refs #468
* setGameScore() changes
- Changed behaviour: messages with high scores will be update with new
high scores by default. (documentation fix)
- Use (new) disable_edit_message in setGameScore to disable the above new
behaviour.
- The edit_message parameter from setGameScore is no longer in use. For
backward compatibility, it will be taken into account for a while,
unless disable_edit_message is passed explicitly.
refs #468
* New field forward_from_message_id for Message.
refs #468
* New parameter cache_time for answerCallbackQuery
refs #468
* replykeyboardhide renamed to replykeyboardremove
refs #468
* Unitests for updated setGameScore semantics
refs #468
* Backward compatibility for ReplyKeyboardHide
refs #468
* Fix docstrings of wrapper methods in Message
* Unitest new field forward_from_message_id of Message
refs #468
* Fix testMaxCaptionLength
Telegram servers changed their behaviour - now they truncate a long
caption instead of returning an error.
* MessageHandler: Added support for channel posts
* Fix flake8 complaints in a manner which yapf will like it too.
* fix rst markup
* Adding timeunit and day support to the jobqueue
* Adding tests
* Changed the file permission back to 644.
* Changed AssertEqual argument order to (actual, expectd).
* Removed the TimeUnit enum and unit param, instead use datetime.time for interval.
* Removing the TimeUnits enum and unit param in favour of optionally using a datetime.time as the interval.
* Removing the TimeUnits enumeration, forgot the remove it in the last one.
* Removed some old docstrings refering to the TimeUnits enum.
* Removed the old TimeUnits import.
* Adding some error handling for the 'days' argument (only a 'tuple' with 'Days')
* Writing the error message directly in the exception.
* Moving a debug statement wrongfully saying a job would be running on days it wouldn't.
* Writing error messages directly in the exceptions instead of making an extra variable.
* Replacing datetime.time in favour of datetime.timedelta because of the get_seconds() method.
* Adding error handling for the method .
* Splitting the tests up in multiple ones, no float test because I haven't found a reliable way to test it.
* Excluding .exrc file.
* Removing \ at EOF of ValueError.
* Replacing Enums with plain new-style classes.
* Using numbers.number to check for ints/floats instead of seperate int/float checks.
* Fixing typo, number -> Number.
* Changed lower_case Days attributes to UPPER_CASE.
* Different formatting for Days class, removed the get_days function in favour of a tuple.
* Removed redundant function get_days.
* Edited the docstring for next_t to also take datetime.timedelta.
* Removed for-loop in favour of any().
* Changed docstring for interval.
* Removed debug print.
* Changing some docstrings.
* Changing some docstrings (again).
* update sphinx source files to properly build latexpdf and improve html build
* fix docstrings and sphinx sources to get rid of warnings
* add telegram.contrib.rst
* initial commit for user_data
* add chat_data and use defaultdict
* fix chat_data copy-paste error
* add test for user_data and chat_data
* fix case where chat is None
* remove braces from import line
* Properly split and handle arguments in CommandHandler
* Update the docstring for pass_args in CommandHandler
* Properly split and handle arguments in StringCommandHandler
* bot.py: add create_references method
* create bot reference in webhook handler, use create_references on new updates
* message.py: implement reply_text
* echobot2.py: use Message.reply_text
* fix create_references in webhook handler
* add some more instance methods
* Chat.kick_member and unban_member
* bot.py: Create bot references in outgoing messages
* add tests for everything testable
* test_updater.py: add create_references method to MockBot
* remove Bot.create_references and refactor TelegramObject.de_json to take the additional parameter bot
* List bot as named kwarg where used
* file.py: Use Bot.request property instead of Bot._request attr
* Create a Request class which maintains its own connection pool
* When creating a Bot instance a new Request instance will be created if one wasn't supplied.
* Updater is responsible for creating a Request instance if a Bot instance wasn't provided.
* Dispatcher: add method to run async functions without decorator
* Dispatcher can now run as a singleton (allowing run_async decorator to work) as it always did and as multiple instances (where run_async decorator will raise RuntimeError)
* initial commit for conversationhandler and example
* implement simple Promise for run_async/conversationhandler
* refactor Promise._done to done
* add handling for timed out Promises
* correctly handle promises with None results
* fix handling tuple states
* update comments on example
* Added a first test on the ConversationHandler.
* Fixed a small typo.
* Yapf'd.
* add sphinx doc for conversation handler
* fix title for callbackqueryhandler sphinx docs
- start the jobqueue (by default) during __init__() instead of during
put()
- protect self._next_peek and self.__tick with a Lock
- rename self._start() to self._main_loop()
- stop() is now blocking until the event loop thread exits
during test_bootstrap_retries_fail() there is an exception raised (by
design): TelegramError('test')
For a reason I haven't managed to pinpoint the above exception in its
precise timing caused the Updater to be left in a state which is
'self.running == False', but the dispatcher threads already initialized.
This patch identifies this extreme case and makes sure to go over the
stop procedure.