File

class telegram.File(file_id, file_unique_id, file_size=None, file_path=None, *, api_kwargs=None)[source]

Bases: telegram.TelegramObject

This object represents a file ready to be downloaded. The file can be e.g. downloaded with download_to_drive. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling telegram.Bot.get_file().

Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their file_unique_id is equal.

Changed in version 20.0: download was split into download_to_drive() and download_to_memory().

Note

Parameters:
  • file_id (str) – Identifier for this file, which can be used to download or reuse the file.

  • file_unique_id (str) – Unique identifier for this file, which is supposed to be the same over time and for different bots. Can’t be used to download or reuse the file.

  • file_size (int, optional) – File size in bytes, if known.

  • file_path (str, optional) – File path. Use e.g. download_to_drive() to get the file.

file_id[source]

Identifier for this file, which can be used to download or reuse the file.

Type:

str

file_unique_id[source]

Unique identifier for this file, which is supposed to be the same over time and for different bots. Can’t be used to download or reuse the file.

Type:

str

file_size[source]

Optional. File size in bytes, if known.

Type:

int

file_path[source]

Optional. File path. Use e.g. download_to_drive() to get the file.

Type:

str

async download_as_bytearray(buf=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None)[source]

Download this file and return it as a bytearray.

Parameters:

buf (bytearray, optional) – Extend the given bytearray with the downloaded data.

Keyword Arguments:
Returns:

The same object as buf if it was specified. Otherwise a newly allocated bytearray.

Return type:

bytearray

async download_to_drive(custom_path=None, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None)[source]

Download this file. By default, the file is saved in the current working directory with file_path as file name. If the file has no filename, the file ID will be used as filename. If custom_path is supplied as a str or pathlib.Path, it will be saved to that path.

Note

If custom_path isn’t provided and file_path is the path of a local file (which is the case when a Bot API Server is running in local mode), this method will just return the path.

The only exception to this are encrypted files (e.g. a passport file). For these, a file with the prefix decrypted_ will be created in the same directory as the original file in order to decrypt the file without changing the existing one in-place.

Changed in version 20.0:

Parameters:

custom_path (pathlib.Path | str , optional) – The path where the file will be saved to. If not specified, will be saved in the current working directory with file_path as file name or the file_id if file_path is not set.

Keyword Arguments:
Returns:

Returns the Path object the file was downloaded to.

Return type:

pathlib.Path

async download_to_memory(out, *, read_timeout=None, write_timeout=None, connect_timeout=None, pool_timeout=None)[source]

Download this file into memory. out needs to be supplied with a io.BufferedIOBase, the file contents will be saved to that object using the out.write method.

Hint

If you want to immediately read the data from out after calling this method, you should call out.seek(0) first. See also io.IOBase.seek().

New in version 20.0.

Parameters:

out (io.BufferedIOBase) – A file-like object. Must be opened for writing in binary mode.

Keyword Arguments:
set_credentials(credentials)[source]

Sets the passport credentials for the file.

Parameters:

credentials (telegram.FileCredentials) – The credentials.