o
    @Mh                     @   s4   d dl mZmZ d dlmZmZ G dd deZdS )    )StateStorageBaseStateDataContext)OptionalUnionc                   @   s  e Zd ZdZ	d%dee dee ddfdd	Z			d&d
edededee dee dee defddZ				d&d
ededee dee dee de
edf fddZ			d&d
ededee dee dee defddZ			d&d
ededede
eeeef dee dee dee defddZ			d&d
ededee dee dee defddZ			d&d
ededee dee dee defddZ			d&d
ededee dee dee dee fddZ			d&d
eded edee dee dee defd!d"Zdefd#d$ZdS )'StateMemoryStoragea~  
    Memory storage for states.

    Stores states in memory as a dictionary.

    .. code-block:: python3

        storage = StateMemoryStorage()
        bot = TeleBot(token, storage=storage)

    :param separator: Separator for keys, default is ":".
    :type separator: Optional[str]

    :param prefix: Prefix for keys, default is "telebot".
    :type prefix: Optional[str]
    :telebot	separatorprefixreturnNc                 C   s$   || _ || _| jstdi | _d S )NzPrefix cannot be empty)r	   r
   
ValueErrordata)selfr	   r
    r   Q/var/www/html/venv/lib/python3.10/site-packages/telebot/storage/memory_storage.py__init__   s   zStateMemoryStorage.__init__chat_iduser_idstatebusiness_connection_idmessage_thread_idbot_idc              	   C   s`   t |dr|j}| ||| j| j|||}| j|d u r'|i d| j|< dS || j| d< dS )Nname)r   r   r   T)hasattrr   _get_keyr
   r	   r   get)r   r   r   r   r   r   r   _keyr   r   r   	set_state#   s    
	
zStateMemoryStorage.set_statec              	   C   s<   |  ||| j| j|||}| j|d u rd S | j| d S )Nr   r   r
   r	   r   r   r   r   r   r   r   r   r   r   r   r   	get_state@   s   	
zStateMemoryStorage.get_statec              	   C   s:   |  ||| j| j|||}| j|d u rdS | j|= dS )NFTr   r   r   r   r   delete_stateX   s   
zStateMemoryStorage.delete_statekeyvaluec           	   	   C   sP   |  ||| j| j|||}| j|d u rtd| d|| j| d |< dS )NzStateMemoryStorage: key z does not exist.r   T)r   r
   r	   r   r   RuntimeError)	r   r   r   r"   r#   r   r   r   r   r   r   r   set_datap   s   
zStateMemoryStorage.set_datac              	   C   s0   |  ||| j| j|||}| j|i di S )Nr   r   r   r   r   r   get_data   s   	
zStateMemoryStorage.get_datac              	   C   s@   |  ||| j| j|||}| j|d u rdS i | j| d< dS NFr   Tr   r   r   r   r   
reset_data      	
zStateMemoryStorage.reset_datac                 C   s   t | |||||dS )N)r   r   r   r   r   )r   )r   r   r   r   r   r   r   r   r   get_interactive_data   s   z'StateMemoryStorage.get_interactive_datar   c              	   C   s@   |  ||| j| j|||}| j|d u rdS || j| d< dS r'   r   )r   r   r   r   r   r   r   r   r   r   r   save   r)   zStateMemoryStorage.savec                 C   s   d| j  dS )Nz<StateMemoryStorage: >)r   )r   r   r   r   __str__   s   zStateMemoryStorage.__str__)r   r   )NNN)__name__
__module____qualname____doc__r   strr   intboolr   r   r    r!   floatdictr%   r&   r(   r*   r+   r-   r   r   r   r   r      s&   

!


	




r   N)telebot.storage.base_storager   r   typingr   r   r   r   r   r   r   <module>   s    