← Все вопросы

Как отправить ботом файл (например txt или pdf) пользователю?

Задан 29 месяцев назад1.1к просмотров1 ответ
4

Бот должен сформировать текстовый файл с результатами и отправить его пользователю как документ, чтобы можно было скачать. Картинку отправлять умею, а вот обычный файл — нет.

1 ответ

8
✓ Принятый ответ — помог автору

Для документов есть answer_document, файл тоже оборачивается в FSInputFile:

from aiogram.types import FSInputFile

@dp.message(Command("report"))
async def report(message: Message):
    # сначала создаём файл
    with open("result.txt", "w", encoding="utf-8") as f:
        f.write("Твой результат: 42 балла")
    # потом отправляем
    doc = FSInputFile("result.txt")
    await message.answer_document(doc, caption="Лови отчёт")

Так пользователь получит файл, который можно сохранить. encoding="utf-8" важен, чтобы русские буквы внутри файла не превратились в кракозябры.

Ваш ответ

, чтобы ответить на вопрос.