Как передать изображение из базы данных в чат-бот Telegram?

Как в функции `my_profile` в библиотеке aiogram версии 3.4.1 отобразить фото пользователя из базы данных `users`, используя передаваемый ID пользователя?
  • 29 февраля 2024 г. 17:18
Ответы на вопрос 2
Для передачи изображения из базы данных в чат-бот Telegram, вам необходимо сначала извлечь изображение из базы данных в формате, который поддерживается Telegram (например, URL ссылка на изображение). Затем вы можете отправить это изображение в чат-бот Telegram с помощью метода `send_photo` или `send_photo_from_url`.

Пример кода для отображения фото пользователя из базы данных в функции `my_profile` с использованием ID пользователя:

```python
import aiogram
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.types import User

users = {
    1: {
        "name": "John",
        "photo_url": "https://example.com/photo1.jpg"
    },
    2: {
        "name": "Jane",
        "photo_url": "https://example.com/photo2.jpg"
    }
}

bot = Bot(token="YOUR_TOKEN")
dp = Dispatcher(bot)

@dp.message_handler(commands=['my_profile'])
async def my_profile(message: types.Message):
    user_id = message.from_user.id
    
    if user_id in users:
        user_data = users[user_id]
        name = user_data["name"]
        photo_url = user_data["photo_url"]
        
        await bot.send_message(message.chat.id, f"Name: {name}")
        
        # Отправляем фото пользователя
        await bot.send_photo(message.chat.id, photo_url)
    else:
        await bot.send_message(message.chat.id, "User not found")

if __name__ == '__main__':
    aiogram.executor.start_polling(dp)
```

В данном примере, при вызове команды `/my_profile`, бот проверяет наличие пользователя с указанным ID в базе данных `users` и отправляет его имя и фото в чат.

Убедитесь, что ваш база данных содержит корректные URL ссылки на изображения пользователей.
Скачивай фотографию, сохраняй к ней путь в БД, и по этому пути отправляй файл человеку
Похожие вопросы