При отправке фото/файла боту, это фото/файл сохраняется на сервера телеграмма, и каждого такого файла есть свой
file_id. Пример эхо бота, который присылает этот
file_id, если прислать ему фото/файл:
@dp.message_handler(content_types=[ContentType.PHOTO, ContentType.DOCUMENT])
async def echo(message: Message):
try: # если отправил фото
await message.answer(message.photo[-1].file_id) # прислать ID фото
except: # если отправил файл
await message.answer(message.document.file_id) # прислать ID файла
Для начала нужно записать этот
file_id в базу данных, это можно сделать вот так:
import sqlite3
connect = sqlite3.connect("name_of_your_db.db")
cursor = connect.cursor()
def AddTaskToDB(file_id):
try:
cursor.execute("INSERT OR IGNORE INTO `name_of_your_table` (`name_of_column`) VALUES(?)", (file_id))
connect.commit()
except sqlite3.Error as error: # ошибка
print(f'Error: {error}')
Затем получить
file_id из базы данных:
import sqlite3
connect = sqlite3.connect("name_of_your_db.db")
cursor = connect.cursor()
def GetFileID():
try:
file_id = cursor.execute("SELECT `name_of_column` FROM `name_of_your_table`", ).fetchall()[0][0]
return file_id
except sqlite3.Error as error: # ошибка
print(f'Error: {error}')
return "error"
Ну и чтобы отправить этот файл:
@dp.message_handler()
async def sendPhoto(message: types.Message):
try: # если file_id - это фото
await message.answer_photo(GetFileID, 'описание фотографии')
except: # если file_id - это документ
await message.answer_document(GetFileID, 'описание документа')