kan3k1k3n
@kan3k1k3n

Как сделать так, чтобы телеграм бот выбирал рандомную картинку из указанной папки и присылал ее пользователю?

вот часть кода на aiogram 3.0, которая отвечает за сохранение изображения и пересыл рандомного изображения пользователю:
@dp.message(Command('kitty'))
async def start(message: types.Message):
    await message.answer('отправь картинку котика:')
@dp.message()
async def get_img(message: types.document):
    file_info = await bot.get_file(message.document.file_id)
    downloaded_file = await bot.download_file(file_info.file_path)
    file_name = 'img_' + str(random.randint(1, 100)) + '.jpg'
    file_path = os.path.join(folder_path, file_name)
    with open(file_path, 'wb') as file:
        file.write(downloaded_file.getvalue())
        await message.answer('котик успешно сохранен!')

@dp.message(Command('photo'))
async def photo(message: types.Message):
    image_files = os.listdir(folder_path)
    random_image = random.choice(image_files)
    with open(os.path.join(folder_path, random_image), 'rb') as photo:
        await message.reply_photo(photo)

первая функция get_img работает корректно и сохраняет изображение, но когда я вызываю вторую, то появляется ошибка:
File "C:\Users\motor\OneDrive\Рабочий стол\pythonProject1\асинхронный тг-бот.py", line 28, in get_img
    file_info = await bot.get_file(message.document.file_id)
AttributeError: 'NoneType' object has no attribute 'file_id'

причем ошибка в функции get_img, которая работает корректно...
так как отправить рандомную картинку пользователю?
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы