Ali_Pythonist
Member
Ребята, помогите решить задачу. Нужно сделать так, чтобы бот мог сохранять фото в базу данных через BLOB. Если что, я знаю, что можно загрузить file_unique_id в таблицу, но меня такой вариант не устраивает, так как при удалении сообщения этот file_unique_id будет недействителен. Код ниже.
Кстати, и ещё не могу понять как сделать так, что бы бот отправлял file_unique_id из базы данных обратно пользователю. Вот код .
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,))
async def main():
await dp.start_polling(bot)
asyncio.run(main())
Кстати, и ещё не могу понять как сделать так, что бы бот отправлял file_unique_id из базы данных обратно пользователю. Вот код .
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())