L idZddlmZmZddlmZddlmZddlm Z m Z m Z ddl m Z ddlmZmZddlmZmZGd d e eee fZy ) z6This module contains the MessageReactionHandler class.)FinalOptional)Update) DEFAULT_TRUE)RTSCTDVType) BaseHandler) parse_chat_idparse_username)CCTHandlerCallbackceZdZUdZdZdZeeed< dZ eeed< dZ eeed< d d d d e e fd d d e e eefd eeedeeedeeedeeededeeffd ZdedefdZxZS)MessageReactionHandlera Handler class to handle Telegram updates that contain a message reaction. Note: The following rules apply to both ``username`` and the ``chat_id`` param groups, respectively: * If none of them are passed, the handler does not filter the update for that specific attribute. * If a chat ID **or** a username is passed, the updates will be filtered with that specific attribute. * If a chat ID **and** a username are passed, an update containing **any** of them will be filtered. * :attr:`telegram.MessageReactionUpdated.actor_chat` is *not* considered for :paramref:`user_id` and :paramref:`user_username` filtering. 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. .. versionadded:: 20.8 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`. message_reaction_types (:obj:`int`, optional): Pass one of :attr:`MESSAGE_REACTION_UPDATED`, :attr:`MESSAGE_REACTION_COUNT_UPDATED` or :attr:`MESSAGE_REACTION` to specify if this handler should handle only updates with :attr:`telegram.Update.message_reaction`, :attr:`telegram.Update.message_reaction_count` or both. Defaults to :attr:`MESSAGE_REACTION`. chat_id (:obj:`int` | Collection[:obj:`int`], optional): Filters reactions to allow only those which happen in the specified chat ID(s). chat_username (:obj:`str` | Collection[:obj:`str`], optional): Filters reactions to allow only those which happen in the specified username(s). user_id (:obj:`int` | Collection[:obj:`int`], optional): Filters reactions to allow only those which are set by the specified chat ID(s) (this can be the chat itself in the case of anonymous users, see the :paramref:`telegram.MessageReactionUpdated.actor_chat`). user_username (:obj:`str` | Collection[:obj:`str`], optional): Filters reactions to allow only those which are set by the specified username(s) (this can be the chat itself in the case of anonymous users, see the :paramref:`telegram.MessageReactionUpdated.actor_chat`). 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. message_reaction_types (:obj:`int`): Optional. Specifies if this handler should handle only updates with :attr:`telegram.Update.message_reaction`, :attr:`telegram.Update.message_reaction_count` or both. block (:obj:`bool`): Determines whether the callback will run in a blocking way. ) _chat_ids_chat_usernames _user_ids_user_usernamesmessage_reaction_typesMESSAGE_REACTION_UPDATEDrMESSAGE_REACTION_COUNT_UPDATEDMESSAGE_REACTIONNselfzMessageReactionHandler[CCT, RT]callbackchat_id chat_usernameuser_id user_usernamerblockct|||||_t||_t ||_|s|r%||j|jfvr tdt||_ t ||_ y)N)r!zwYou can not filter for users and include anonymous reactions. Set `message_reaction_types` to MESSAGE_REACTION_UPDATED.) super__init__rr rr rrr ValueErrorrr) rrrrrr rr! __class__s s/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/telegram/ext/_handlers/messagereactionhandler.pyr$zMessageReactionHandler.__init__ps /+A#&w/-m< }*@  ! !  / /E + H 'w/-m<updatereturncBt|tsy|js |jsy|j|j k(r |jry|j|j k(r |jryt|j|j|j|jfsy|jx}r |jnd}|r |jnd}|jx}r |jnd}|r |jnd}t!|jxr||jvxsst!|jxr||jvxsLt!|jxr||jvxs%t!|jxr||jvS)zDetermines whether an update should be passed to this handler's :attr:`callback`. Args: update (:class:`telegram.Update` | :obj:`object`): Incoming update. Returns: :obj:`bool` FTN) isinstancermessage_reactionmessage_reaction_countrrranyrrrreffective_chatidusernameeffective_userbool)rr)chatrruserrr s r' check_updatez#MessageReactionHandler.check_updatesn&&)''6+H+H  ' '4+H+H H--  ' '4+N+N N''DNND$8$8$..$J^J^_`'-&;&;;d;$''$)- 4 &,&;&;;d;$''$)- 4  ?W%> @ VD((Tmt?S?S.SU VDNNB4>>(AC VD((Tmt?S?S.SU  r()__name__ __module__ __qualname____doc__ __slots__rrint__annotations__rrrrrr rrrstrr r4r$objectr7 __classcell__)r&s@r'rrs=~I,.eCj-a12"E#J27#$eCj$; '+,0&*,0&6*=/=!&#r/2=#c(#= C) = #c(# =  C) =!$=d|=4* 6* d* r(rN)r;typingrrtelegramrtelegram._utils.defaultvaluertelegram._utils.typesrrr "telegram.ext._handlers.basehandlerr #telegram.ext._utils._update_parsingr r telegram.ext._utils.typesr rrr(r'rJs;&="511:M:U [b9U r(