Я делаю телеграмм бота, и мне нужно сохранять отправление пользователем фото, в таблицу SQLite 3, а потом обратно отправлять этому пользователю через метод SELECT, но у меня не получается, и программа не работает. Помогите пожалуйста вот код.
Python:
import asyncio
import sqlite3 as sq
from aiogram import Bot, Dispatcher, types, F
from aiogram.filters import Command
from testBot.token_bot import token
bot = Bot(token=token)
dp = Dispatcher()
@dp.message(Command('start'))
async def bot_start(message: types.Message):
await message.answer(text='Привет отправь мне фото.')
@dp.message(F.photo)
async def bot_photo(message: types.Message):
with sq.connect('sqlite_bot') as sq_bot:
data_photo = message.photo[-1]
cur = sq_bot.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS user(photo BLOB, PRIMARY KEY(photo))""")
cur.execute("""INSERT OR IGNORE INTO user(photo) VALUES(?)""",(data_photo.file_unique_id,))
@dp.message(Command('photo'))
async def send_photo_bot(message: types.Message):
with sq.connect('sqlite_bot') as sq_bot:
cur = sq_bot.cursor()
photo = cur.execute("""SELECT * FROM user WHERE photo = ? """, (photo,)).fetchone()
await message.answer_photo(photo=photo)
async def main():
await dp.start_polling(bot)
asyncio.run(main())
Я смог добиться лиш того, что мой бот сохранял непосредственно file_unique_id в таблицу, но меня это не устраивает, так как при удаление фото из лс пользователем, этот file_unique_id просто будет не действительным. Так же не получается воспользоваться методом SELECT, из SQLite 3, что бы выбрать непосредственно само фото по file_unique_id, так же был бы рад, если вы мне расскажете, как выбирать данных из таблицы, и отправлять её пользователю.
New contributor