L i dZddlmZmZddlmZmZmZmZm Z m Z ddl m Z ddl mZddlmZddlmZmZerddlmZe d Ze d ZGd d eeeeefZy )zLThis module contains the base class for handlers as used by the Application.)ABCabstractmethod) TYPE_CHECKINGAnyGenericOptionalTypeVarUnion) DEFAULT_TRUE)build_repr_with_selected_attrs)DVType)CCTHandlerCallback) ApplicationRTUTc eZdZdZdZefdddeeee fde e fdZ de fd Zed edeee effd Zd ed d dedede f dZded ed d deddf dZy) BaseHandlera The base class for all update handlers. Create custom handlers by inheriting from it. Warning: When setting :paramref:`block` to :obj:`False`, you cannot rely on adding custom attributes to :class:`telegram.ext.CallbackContext`. See its docs for more info. This class is a :class:`~typing.Generic` class and accepts three type variables: 1. The type of the updates that this handler will handle. Must coincide with the type of the first argument of :paramref:`callback`. :meth:`check_update` must only accept updates of this type. 2. The type of the second argument of :paramref:`callback`. Must coincide with the type of the parameters :paramref:`handle_update.context` and :paramref:`collect_additional_context.context` as well as the second argument of :paramref:`callback`. Must be either :class:`~telegram.ext.CallbackContext` or a subclass of that class. .. tip:: For this type variable, one should usually provide a :class:`~typing.TypeVar` that is also used for the mentioned method arguments. That way, a type checker can check whether this handler fits the definition of the :class:`~Application`. 3. The return type of the :paramref:`callback` function accepted by this handler. .. seealso:: :wiki:`Types of Handlers ` .. versionchanged:: 20.0 * The attribute ``run_async`` is now :paramref:`block`. * This class was previously named ``Handler``. Args: callback (:term:`coroutine function`): The callback function for this handler. Will be called when :meth:`check_update` has determined that an update should be processed by this handler. Callback signature:: async def callback(update: Update, context: CallbackContext) The return value of the callback is usually ignored except for the special case of :class:`telegram.ext.ConversationHandler`. block (:obj:`bool`, optional): Determines whether the return value of the callback should be awaited before processing the next handler in :meth:`telegram.ext.Application.process_update`. Defaults to :obj:`True`. .. seealso:: :wiki:`Concurrency` Attributes: callback (:term:`coroutine function`): The callback function for this handler. block (:obj:`bool`): Determines whether the callback will run in a blocking way. )blockcallbackselfzBaseHandler[UT, CCT, RT]rrc ||_||_y)N)rr)rrrs h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/telegram/ext/_handlers/basehandler.py__init__zBaseHandler.__init__]s 7? #( returnc |jj}t ||S#t$rt|j}Y-wxYw)a!Give a string representation of the handler in the form ``ClassName[callback=...]``. As this class doesn't implement :meth:`object.__str__`, the default implementation will be used, which is equivalent to :meth:`__repr__`. Returns: :obj:`str` )r)r __qualname__AttributeErrorreprr )r callback_names r__repr__zBaseHandler.__repr__esD 0 MM66M.d]KK 0 /M 0s%AAupdatecy)a This method is called to determine if an update should be handled by this handler instance. It should always be overridden. Note: Custom updates types can be handled by the application. Therefore, an implementation of this method should always check the type of :paramref:`update`. Args: update (:obj:`object` | :class:`telegram.Update`): The update to be tested. Returns: Either :obj:`None` or :obj:`False` if the update should not be handled. Otherwise an object that will be passed to :meth:`handle_update` and :meth:`collect_additional_context` when the update gets handled. N)rr#s r check_updatezBaseHandler.check_updatetr applicationz)Application[Any, CCT, Any, Any, Any, Any] check_resultcontextcjK|j|||||j||d{S7w)a This method is called if it was determined that an update should indeed be handled by this instance. Calls :attr:`callback` along with its respectful arguments. To work with the :class:`telegram.ext.ConversationHandler`, this method returns the value returned from :attr:`callback`. Note that it can be overridden if needed by the subclassing handler. Args: update (:obj:`str` | :class:`telegram.Update`): The update to be handled. application (:class:`telegram.ext.Application`): The calling application. check_result (:class:`object`): The result from :meth:`check_update`. context (:class:`telegram.ext.CallbackContext`): The context as provided by the application. N)collect_additional_contextr)rr#r(r)r*s r handle_updatezBaseHandler.handle_updates3, ''lS]]673333s *313Ncy)aPrepares additional arguments for the context. Override if needed. Args: context (:class:`telegram.ext.CallbackContext`): The context object. update (:class:`telegram.Update`): The update to gather chat/user id from. application (:class:`telegram.ext.Application`): The calling application. check_result: The result (return value) from :meth:`check_update`. Nr%)rr*r#r(r)s rr,z&BaseHandler.collect_additional_contextr'r)__name__ __module__r__doc__ __slots__r rrrrr boolrstrr"robjectrr r&r-rr,r%rrrr$s1fI+)()!"c2+.)d|) L# L 6 huT6\7J.K  &44A4 4  4 42   A      rrN)r1abcrrtypingrrrrr r telegram._utils.defaultvaluer telegram._utils.reprr telegram._utils.typesr telegram.ext._utils.typesrr telegram.extrrrrr%rrr=sS&S#HH5?(:( T] T]L #wr3{+L r