Задать вопрос

Бот не видеть file_id, что делать?

Делаю бота в aiogram, когда ему пишет /mem то бот должен отправить рандомный фото с помощю file_id, все id фото я взяль так
@dp.message_handler(content_types=['photo'])
async def get_file_id_p(message: types.Message):
    await message.reply(message.photo[-1].file_id)

Но бот не знает эти file_id. Вот код
@dp.message_handler(content_types=['text'], text=['/mem', 'mem', 'мем'])
async def sendphoto(msg):
        arr=["AgACAgIAAxkBAAIBDGOTEZidA5W9TrvjLb_d7cAE5Nn7AALewjEbPQigSLUEN_gyByq8AQADAgADeAADKwQ", "AgACAgIAAxkBAAIBDGOTEZidA5W9TrvjLb_d7cAE5Nn7AALewjEbPQigSLUEN_gyByq8AQADAgADeAADKwW"] # or imagefileid
        photo=open(random.choice(arr), "rb")
        await bot.send_photo(msg.from_user.id, photo)


Что делать? И как решить?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
ma4akk
@ma4akk
В вашем коде ошибка. Вы используете метод open() для открытия файла изображения, который принимает путь к файлу изображения на диске. В вашем случае в качестве пути к файлу изображения вы передаете строку с file_id изображения, который хранится на сервере Telegram.

Чтобы отправить изображение ботом используйте метод send_photo(), который принимает chat_id получателя, и идентификатор файла изображения file_id.

@dp.message_handler(content_types=['text'], text=['/mem', 'mem', 'мем'])
async def sendphoto(msg):
    arr=["AgACAgIAAxkBAAIBDGOTEZidA5W9TrvjLb_d7cAE5Nn7AALewjEbPQigSLUEN_gyByq8AQADAgADeAADKwQ", "AgACAgIAAxkBAAIBDGOTEZidA5W9TrvjLb_d7cAE5Nn7AALewjEbPQigSLUEN_gyByq8AQADAgADeAADKwW"]
    file_id = random.choice(arr)
    await bot.send_photo(msg.from_user.id, file_id)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы