o
    -˜Žj  ã                   @   sF   d dl mZmZmZ d dlZd dlmZmZmZmZ G dd„ dƒZ	dS )é    )ÚListÚOptionalÚUnionN)ÚenumsÚrawÚtypesÚutilsc                   @   sz   e Zd Z					ddddedeeeef  deeeee f  dee ded	 d
eed  deded f fdd„ZdS )ÚTranslateTextNÚselfzpyrogram.ClientÚto_language_codeÚchat_idÚmessage_idsÚtextÚ
parse_modezenums.ParseModeÚentitiesztypes.MessageEntityÚreturnztypes.TranslatedTextc           
      ƒ   sê   �|dur-t  ˆ |||¡I dH  ¡ \}}ˆ  tjjj|tjj	||p"g d�gd�¡I dH }n-|durV|durVt
|tƒs=|gn|}	ˆ  tjjj|ˆ  |¡I dH |	d�¡I dH }ntdƒ‚t|jƒdkrktj ˆ |jd ¡S ‡ fdd	„|jD ƒS )
a×  Translates a text or message(s) to the given language. If the current user is a Telegram Premium user, then text formatting is preserved.

        Parameters:
            to_language_code (``str``):
                Language code of the language to which the message/text is translated.
                Must be one of the supported language codes.

            chat_id (``Optional[int | str]``):
                Unique identifier (int) or username (str) of the target chat.

            message_ids (``Optional[int | List[int]]``):
                Identifier or list of message identifiers of the target message(s).

            text (``Optional[str]``):
                Text to translate.

            parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*):
                By default, texts are parsed using both Markdown and HTML styles.
                You can combine both syntaxes together.

            entities (List of :obj:`~pyrogram.types.MessageEntity`):
                List of special entities that appear in message text, which can be specified instead of *parse_mode*.

        Example:
            .. code-block:: python

                # Using chat_id and message_ids
                await app.translate_message_text("en", chat_id, message_ids)

                # Using text
                await app.translate_message_text("en", text="Hello, how are you?")

                # Using text with parse_mode
                await app.translate_message_text("en", text="*Hello*, how are you?", parse_mode=ParseMode.MARKDOWN)

                # Using text with entities
                entities = [types.MessageEntityBold(offset=0, length=5)]
                await app.translate_message_text("en", text="*Hello*, how are you?", entities=entities)

        Returns:
            :obj:`~pyrogram.types.TranslatedText` | List of :obj:`~pyrogram.types.TranslatedText`: In case *message_ids* was not
            a list, a single result is returned, otherwise a list of results is returned.
        N)r   r   )Úto_langr   )r   ÚpeerÚidzCEither 'text' or both 'chat_id' and 'message_ids' must be provided.é   r   c                    s   g | ]	}t j ˆ |¡‘qS © )r   ÚTranslatedTextÚ_parse)Ú.0Úi©r
   r   úe/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/methods/messages/translate_text.pyÚ
<listcomp>u   s    ÿÿz8TranslateText.translate_message_text.<locals>.<listcomp>)r   Úparse_text_entitiesÚvaluesÚinvoker   Ú	functionsÚmessagesr	   r   ÚTextWithEntitiesÚ
isinstanceÚlistÚresolve_peerÚ
ValueErrorÚlenÚresultr   r   )
r
   r   r   r   r   r   r   ÚmessageÚrÚidsr   r   r   Útranslate_message_text   sJ   €4üù	þÿþÿýÿÿÿ
þýz$TranslateText.translate_message_text)NNNNN)	Ú__name__Ú
__module__Ú__qualname__Ústrr   r   Úintr   r-   r   r   r   r   r	      s.    ùÿþýüûú
ùør	   )
Útypingr   r   r   Úpyrogramr   r   r   r   r	   r   r   r   r   Ú<module>   s   